mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
6184 字
20 分钟
微信小程序反编译
2026-06-09

��_�.📱雷电模拟器 � + Frida:微信小程序脱壳 反编译终极指南 ⚡ 雷电模拟器 9 + Frida:微信小程序脱壳反编译终极 指南(修正版) 创建时间:2026-02-18 核心环境:Windows 11 + 雷电模拟器 9 (LDPlayer 9) Frida 版本:17.7.2 Node.js 版本:v24.13.1 (LTS) 专用工具:wxappUnpacker + 雷电专属 ADB 用途:授权渗透测试、安全研究、学习分析 📋 目录

  1. 环境准备清单
  2. 雷电模拟器 9 专属配置
  3. Frida Server 部署 (雷电版)
  4. 脱壳脚本获取与准备
  5. 一体化脱壳流程 (实战)
  6. 解包与源码还原
  7. 渗透测试实战应用
  8. 雷电专属常⻅问题 环境准备清单 1.1 软件与工具表 104

软件/工具 版本要求 下载地址/来源 状态 雷电模拟器 9 最新版 (9.2.3+) https://www.ldmnq.c ✅ 必装 om Node.js v24.13.1+ https://nodejs.org ✅ 已装 Frida Tools 17.7.2+ pip install frid ✅ 已装 a-tools Git 最新版 https://git-scm.com ✅ 推荐 wxappUnpacker 最新版 GitHub ( leoldev/w ✅ 已装 xappUnpacker ) 7-Zip 最新版 https://www.7- ✅ 解压用 zip.org 微信开发者工具 最新版 微信官方 ✅ 验证用 1.2 快速环境验证 打开 PowerShell,执行以下命令验证基础环境: 1 # 1. 验证 Node.js 2 node —version # 应显示 v24.13.1 3 npm —version # 应显示 11.x.x 4 5 # 2. 验证 Frida 6 frida —version # 应显示 17.7.2 7 8 # 3. 验证雷电 ADB (关键步骤) 9 ldAdb="E:\leidian\LDPlayer9\adb.exe"10if(TestPathldAdb = "E:\leidian\LDPlayer9\adb.exe" 10 if (Test-Path ldAdb) { 11 & $ldAdb version 12 Write-Host ”✅ 雷电 ADB 检测成功” -ForegroundColor Green 13 } else { 14 Write-Host ”❌ 未找到雷电 ADB,请检查安装路径” -ForegroundColor Red 15 } 105

雷电模拟器 9 专属配置 ⚠ 关键点:雷电 9 的 ADB 端口默认是 5555,且必须开启 ROOT 权限 才能运行 Frida Server。 2.1 开启调试与 ROOT

  1. 启动 雷电模拟器 9

  2. 点击右上⻆ 设置图标 (⚙ ) → 【其他设置】

  3. 勾选以下三项(至关重要): ✅ ADB 调试 ○ ○ ✅ 远程 ADB 调试 (端口默认为 5555 ) ✅ ROOT 权限 (选择 “开启”) ○

  4. 点击 保存设置,并 重启模拟器 2.2 连接雷电 ADB 1 # 定义雷电 ADB 路径 2 ldAdb = "E:\leidian\LDPlayer9\adb.exe" 3 4 # 连接模拟器 5 & ldAdb connect 127.0.0.1:5555 6 7 # 验证设备 8 & $ldAdb devices ✅ 成功标志: 1 List of devices attached 2 127.0.0.1:5555 device 2.3 安装微信

  5. 在雷电模拟器中打开 应用中心

  6. 搜索 微信 并安装(或下载微信 APK 拖入模拟器安装) 106

  7. 打开微信,登录账号(建议使用小号),确保能正常进入小程序界面 Frida Server 部署 (雷电版) 💡 架构提示:雷电模拟器 9 通常基于 x86_64 架构。如果不确定,可下载 x86 和 x86_64 两个 版本尝试。 3.1 下载 Frida Server 访问:https://github.com/frida/frida/releases 下载对应版本(以 17.7.2 为例): 版本 文件名 推荐度 首选 frida-server-17.7.2-an ⭐⭐⭐⭐⭐ droid-x86_64.xz 备选 frida-server-17.7.2-an ⭐⭐⭐⭐ droid-x86.xz 3.2 解压与推送 1 # 1. 使用 7-Zip 解压下载的 .xz 文件 2 # 2. 将解压后的文件重命名为 frida-server 3 # 3. 假设文件当前在 F:\Tools\frida-server 4 5 # 推送到雷电模拟器 6 & $ldAdb push F:\Tools\frida-server /data/local/tmp/ 3.3 启动 Frida Server ⭐ 关键步骤 ⚠ 重要:以下命令分 Windows PowerShell 和 Android Shell 两部分,请勿混淆! 107

第一步:进入模拟器 Shell(Windows PowerShell 中执行) 1 # 进入模拟器 Shell 2 & ldAdbshell此时命令行提示符会从PSC:.˙.变为genericx8664:/ldAdb shell 此时命令行提示符会从 PS C:\... 变为 generic_x86_64:/ ,表示已进入 Android 系统。 第二步:在 Android Shell 中执行(注意:以下是 Android 命令,不是 PowerShell!) 1 # 1. 切换到 root 用户(雷电已开启 ROOT,直接输入 su) 2 su 3 4 # 提示符会从 $ 变为 #,表示已获得 root 权限 5 6 # 2. 进入目录 7 cd /data/local/tmp 8 9 # 3. 赋予执行权限 10 chmod 755 frida-server 11 12 # 4. 后台启动 Frida Server(注意:& 符号在 Android shell 中合法) 13 ./frida-server & 14 15 # 5. 退出 Android Shell(输入 exit 或按 Ctrl+D) 16 exit 17 exit ⚠ 常⻅错误: ● & 符号在 Windows PowerShell 中是非法的,但在 Android Shell 中是合法的后台运行符 ● 必须先用 adb shell 进入模拟器,再执行 ./frida-server & 3.4 验证 Frida 连接(返回 Windows PowerShell 后执行) 1 # 列出进程,确认能看到微信 (com.tencent.mm) 2 frida-ps -U ✅ 成功标志:输出列表中包含 com.tencent.mm 108

脱壳脚本获取与准备 4.1 克隆专用脚本库 1 # 创建目录 2 mkdir F:\MiniProgramHack 3 cd F:\MiniProgramHack 4 5 # 克隆推荐的脱壳脚本库 6 git clone https://github.com/Cherrison/wechat-app-unpack.git 7 cd wechat-app-unpack 4.2 备用脚本(如果仓库脚本失效) 创建 simple-unpack.js 文件: 1 // simple-unpack.js 2 Java.perform(function() { 3 console.log(”[] Simple Unpack Started”); 4 5 var FileOutputStream = Java.use(“java.io.FileOutputStream”); 6 7 FileOutputStream.write.overload(‘[B’).implementation = function(data) { 8 var path = this.getFD().toString(); 9 if (path.includes(“wxapkg”)) { 10 console.log(”[] Captured wxapkg write: ” + data.length + ” by tes”); 11 } 12 return this.write(data); 13 }; 14 }); 一体化脱壳流程 (实战) 109

🚀 核心逻辑:启动 Frida 注入微信 → 打开小程序触发加载 → 脚本自动 dump 出解密后的包 5.1 启动注入(Windows PowerShell 中执行) 1 # 进入脚本目录 2 cd F:\MiniProgramHack\wechat-app-unpack 3 4 # 执行注入命令 5 frida -U -f com.tencent.mm -l wxapp-unpack.js —no-pause 参数 说明 -U 连接 USB 设备(模拟器) -f com.tencent.mm 指定微信包名并启动 -l wxapp-unpack.js 加载脱壳脚本 —no-pause 不暂停进程 5.2 触发脱壳(切换到雷电模拟器操作)

  1. PowerShell 窗口显示 [*] Frida attached 后 不要关闭
  2. 切换到 雷电模拟器
  3. 打开 微信
  4. 进入 目标小程序(如:⼴⻄物流职业技术学院)
  5. 关键操作:在小程序内多点击几个⻚面,触发资源加载 5.3 监控输出(观察 PowerShell 窗口) 当脚本生效时,会输出类似信息: 110

1 [] Detecting wxapkg… 2 [] Saving unpacked wxapkg to: /data/local/tmp/unpacked.wxapkg 3 [*] Done. ⚠ 注意:不同脚本的输出路径可能不同,请仔细阅读控制台输出的保存路径 5.4 拉取解密包(返回 Windows PowerShell 执行) 1 # 从模拟器拉取文件到电脑 2 & $ldAdb pull /data/local/tmp/unpacked.wxapkg F:\MiniProgramHack\unpacked.w xapkg 解包与源码还原 6.1 执行解包 1 cd F:\wxappUnpacker-main 2 node wuWxapkg.js F:\MiniProgramHack\unpacked.wxapkg 6.2 检查结果 1 cd unpacked 2 dir ✅ 完整结构应包含: ● app.json (配置) ● app.js (逻辑) ● pages/ (⻚面) ● utils/ (工具) 111

6.3 导入开发者工具验证

  1. 打开 微信开发者工具
  2. 导入项目,选择 F:\wxappUnpacker-main\unpacked
  3. 填入 AppID (可在 project.config.json 中找到)
  4. 点击 编译 ✅ 如果能正常运行界面,说明脱壳解包 完美成功! 渗透测试实战应用 7.1 自动化敏感信息扫描 在解包目录 F:\wxappUnpacker-main\unpacked 下执行: 1 # 1. 搜索所有 API 接口 2 Select-String -Path .**.js -Pattern “https?://[\w.-]+” | Select-Object - Unique 3 4 # 2. 搜索硬编码密钥 5 Select-String -Path .**.js -Pattern “(LTAI|access_key|secret|token|passw ord)” 6 7 # 3. 搜索加密函数 8 Select-String -Path .***.js -Pattern “(CryptoJS|AES|RSA|encrypt|decrypt)” 7.2 漏洞测试清单 漏洞类型 测试点 验证方法 硬编码密钥 utils/request.js 查找阿里云 OSS Key、腾讯云 服务密钥 未授权访问 核心业务接口 去掉 Header 中的 Token 直 接请求 112

越权访问 用户 ID 参数 修改 user_id 或 order_ id 查看他人数据 逻辑漏洞 支付/积分接口 重放请求,修改金额或积分数值 信息泄露 app.json 检查是否暴露了测试环境域名或 内部路径 雷电专属常⻅问题 ❌ 问题 1: 显示 adb devices unauthorized 原因:模拟器未授权电脑 解决:

  1. 模拟器弹出 “允许 USB 调试吗?” 对话框 → 勾选 始终允许 → 确定
  2. 若无弹窗,重启模拟器 ADB: 1 & ldAdb kill-server 2 & ldAdb start-server 3 & ldAdb connect 127.0.0.1:5555 ❌ 问题 2: 找不到设备 frida-ps -U 原因:Frida Server 未启动或架构不匹配 解决: 1 # 1. 检查 Frida Server 是否运行 2 & ldAdb shell “ps | grep frida-server” 3 4 # 2. 如果没有运行,重新启动 5 & $ldAdb shell “su -c ‘/data/local/tmp/frida-server &’” 6 7 # 3. 尝试 x86 版本的 Frida Server 113

❌ 问题 3:注入后微信闪退 原因:微信检测到 Frida 或脚本 Hook 点冲突 解决:

  1. 使用隐藏 Frida 的脚本(搜索 frida-detection-hide )
  2. 安装较旧版本的微信 APK (如 8.0.x 早期版本)
  3. 更换脱壳脚本尝试 ❌ 问题 4:解包后 只有几 KB app.js 原因:脱壳失败,拿到的仍是加密包 解决:
  4. 确认 Frida 脚本是否输出了 “Done” 或 “Saved”
  5. 尝试在小程序加载完成后再执行注入
  6. 检查模拟器日志,看是否有报错 快速命令速查表 (雷电 9 版) 114

1 # ==================== 变量定义 ==================== 2 ldAdb = "E:\leidian\LDPlayer9\adb.exe" 3 4 # ==================== 1. 启动环境 ==================== 5 & ldAdb connect 127.0.0.1:5555 6 & ldAdb devices 7 8 # ==================== 2. 推送并启动 Frida Server ==================== 9 & ldAdb push F:\Tools\frida-server /data/local/tmp/ 10 & ldAdb shell "su -c '/data/local/tmp/frida-server &'" 11 12 # ==================== 3. 验证连接 ==================== 13 frida-ps -U | findstr "mm" 14 15 # ==================== 4. 开始脱壳 ==================== 16 cd F:\MiniProgramHack\wechat-app-unpack 17 frida -U -f com.tencent.mm -l wxapp-unpack.js --no-pause 18 # -> 此时去模拟器打开小程序 19 20 # ==================== 5. 拉取包 ==================== 21 & ldAdb pull /data/local/tmp/unpacked.wxapkg F:\MiniProgramHack
22 23 # ==================== 6. 解包 ==================== 24 cd F:\wxappUnpacker-main 25 node wuWxapkg.js F:\MiniProgramHack\unpacked.wxapkg 命令执行环境对照表 ⭐ 命令 执行环境 提示符特征 node —version Windows PowerShell PS C:…> frida —version Windows PowerShell PS C:…> & ldAdbconnectWindowsPowerShellPSC:.˙.>adbshellWindowsPowerShellPSC:.˙.>suAndroidShellgenericx8664:/ldAdb connect Windows PowerShell PS C:\...> adb shell Windows PowerShell PS C:\...> su Android Shell generic_x86_64:/

115

chmod 755 frida- Android Shell # server ./frida-server & Android Shell # exit Android Shell # → $ → 返回 PowerShell ⚠ 关键区别: ● Windows PowerShell 中 & 是非法字符(用于后台运行) ● Android Shell 中 & 是合法的后台运行符 ● 必须先用 adb shell 进入模拟器,再执行 Android 命令 法律与道德声明 ⚠ 重要提醒:

  1. 本教程仅限 授权渗透测试、安全研究 及 个人学习 使用
  2. 严禁利用本技术对未授权的小程序进行攻击、数据窃取或破坏
  3. 反编译所得源码不得公开传播或用于商业用途
  4. 测试完成后,请及时清理测试数据和环境 最后更新:2026-02-18 适用环境:雷电模拟器 9 + Windows 11 版本:v2.1 (修正版) 🚀 现在,打开你的雷电模拟器,开始第一场小程序脱壳实战吧! 116

��_�.📱 微信小程序反编译工具 wxappUnpacker 完整使用教程 创建时间:2026-02-18 适用系统:Windows 11 工具版本:wxappUnpacker-main Node.js 版本:v24.13.1 (LTS) 用途:授权渗透测试、安全研究、学习分析 环境准备 1.1 安装 Node.js 项目 要求 实际安装 版本 v14.17.0+ ✅ v24.13.1 (LTS) npm 6.0+ ✅ 11.8.0 下载 https://nodejs.org/zh-cn/ Windows 安装程序 (.msi) 安装步骤:

  1. 下载 node-v24.13.1-x64.msi
  2. 双击运行,一直点 Next
  3. ✅ 确保勾选 “Add to PATH”
  4. 安装完成后重启 PowerShell 验证命令: 1 node —version # 输出:v24.13.1 2 npm —version # 输出:11.8.0 117

1.2 下载 wxappUnpacker 方法 A:Git 克隆 1 cd F:\Tools 2 git clone https://github.com/leoldev/wxappUnpacker.git 3 cd wxappUnpacker 方法 B:手动下载

  1. 访问 https://github.com/leoldev/wxappUnpacker
  2. 点击 Code → Download ZIP
  3. 解压到 F:\wxappUnpacker-main 工具安装 2.1 配置 npm 镜像源 ⚠ 国内必做,否则下载极慢或失败 1 # 设置淘宝镜像 2 npm config set registry https://registry.npmmirror.com 3 4 # 验证设置 5 npm config get registry 2.2 安装依赖 1 # 进入工具目录 2 cd F:\wxappUnpacker-main 3 4 # 安装所有依赖 5 npm install 成功标志: 118

1 added 166 packages in 19s 2 48 packages are looking for funding ⚠ 警告信息可忽略: 这些是依赖包的弃用警告,不影响功能使用。 1 npm warn deprecated boolean@3.2.0 2 npm warn deprecated uglify-es@3.3.10 2.3 验证安装 1 # 检查核心文件 2 dir wuWxapkg.js 3 4 # 测试帮助命令 5 node wuWxapkg.js —help 成功输出: 1 Command Line Helper: 2 Unpack a wxapkg file. 3 [-o] [-d] [-s=

] <files…> 功能详解 3.1 命令参数说明 参数 说明 示例 <files…> 要解包的 .wxapkg 文件路径 app.wxapkg -o 只解包,不执行后续处理 node wuWxapkg.js -o ap p.wxapkg -d 保留中间文件(调试用) node wuWxapkg.js -d ap p.wxapkg 119

-s=

分包模式,指定主包路径 node wuWxapkg.js sub.w xapkg -s=../master 3.2 功能一览表 功能 命令 输出 基础解包 node wuWxapkg.js app.w 还原 WXML/WXSS/JS xapkg 保留中间文件 node wuWxapkg.js -d ap 包含 .wxmlc 等 p.wxapkg 仅解包不处理 node wuWxapkg.js -o ap 原始解包内容 p.wxapkg 分包解包 node wuWxapkg.js sub.w 合并到主包 xapkg -s=../master 批量解包 node wuWxapkg.js *.wxa 多个文件同时解包 pkg 实战解包 4.1 获取 .wxapkg 文件 方法 A:微信开发者工具缓存 1 # 缓存路径 2 C:\Users\user\AppData\Local\微信开发者工具\User Data\Default\Application\Cac he\CacheEntry
3 4 # 搜索命令 5 Get-ChildItem -Path C:\ -Filter *.wxapkg -Recurse -ErrorAction SilentlyCont inue | Select-Object FullName 120

方法 B:安卓手机提取(需要 Root) 1 # 文件路径 2 /data/data/com.tencent.mm/MicroMsg/{用户哈希}/appbrand/ 3 4 # 文件名 5 {小程序 ID}.wxapkg 方法 C:抓包获取 使用 Fiddler/Charles 拦截小程序更新请求下载。 4.2 执行解包 1 # 进入工具目录 2 cd F:\wxappUnpacker-main 3 4 # 执行解包(替换为你的文件路径) 5 node wuWxapkg.js “F:\小程序包\guangxi-logistics.wxapkg” 成功输出: 1 [INFO] Start unpacking guangxi-logistics.wxapkg 2 [INFO] Unpack complete! 3 [INFO] Output: ./guangxi-logistics/ 4.3 检查解包结果 1 # 查看解包目录 2 cd guangxi-logistics 3 dir 应包含文件: 121

1 app.json ← 小程序配置 2 app.js ← 主逻辑 3 app.wxss ← 全局样式 4 pages/ ← ⻚面目录 5 ├── index/ 6 │ ├── index.js 7 │ ├── index.wxml 8 │ └── index.wxss 9 └── … 10 utils/ ← 工具函数 11 project.config.json ← 项目配置 12 sitemap.json ← 爬虫配置 4.4 导入微信开发者工具

  1. 打开 微信开发者工具
  2. 点击 + 导入项目
  3. 选择解包目录: F:\wxappUnpacker-main\guangxi-logistics
  4. 填入 AppID(从 project.config.json 获取)
  5. 点击 编译 4.5 分包解包(高级) 场景:小程序有主包 + 多个子包 1 # 1. 先解主包 2 node wuWxapkg.js master-xxx.wxapkg 3 4 # 2. 再解子包(指定主包目录) 5 node wuWxapkg.js sub-xxx.wxapkg -s=../master-xxx 6 7 # ⚠ 注意:-s 参数指向主包解包后的文件夹,不是 .wxapkg 文件 常⻅问题 122

❌ 问题 1:在错误目录执行命令 错误现象: 1 Error: Cannot find module ‘C:\Windows\system32\wuWxapkg.js’ 原因:在系统目录执行,不在工具目录 解决: 1 # 切换到工具目录 2 cd F:\wxappUnpacker-main 3 4 # 验证当前目录 5 pwd ❌ 问题 2:找不到 .wxapkg 文件 搜索命令: 1 # 全盘搜索 2 Get-ChildItem -Path C:,D:,E:,F:\ -Filter *.wxapkg -Recurse -ErrorAction SilentlyContinue | Select-Object FullName 3 4 # 仅搜索 F 盘 5 Get-ChildItem -Path F:\ -Filter *.wxapkg -Recurse -ErrorAction SilentlyCont inue | Select-Object FullName ❌ 问题 3:npm install 下载失败 错误: 1 npm ERR! network timeout at: https://registry.npmjs.org/… 解决: 123

1 # 设置淘宝镜像 2 npm config set registry https://registry.npmmirror.com 3 4 # 删除旧依赖 5 Remove-Item -Recurse -Force node_modules 6 Remove-Item package-lock.json 7 8 # 重新安装 9 npm install ❌ 问题 4:解包后 app.json 缺失 手动创建: 1 { 2 “pages”: [ 3 “pages/index/index”, 4 “pages/logs/logs” 5 ], 6 “window”: { 7 “navigationBarBackgroundColor”: “#ffffff”, 8 “navigationBarTextStyle”: “black”, 9 “navigationBarTitleText”: “小程序名称” 10 }, 11 “style”: “v2”, 12 “sitemapLocation”: “sitemap.json” 13 } ❌ 问题 5:代码混淆严重 解决:

  1. 访问 https://beautifier.io/
  2. 粘贴 JS 代码格式化
  3. 或使用 https://de4js.com/ 反混淆 124

渗透测试应用 5.1 信息收集 文件 关注内容 ⻛险 project.config.json AppID、项目名称 身份标识泄露 app.json ⻚面路径、窗口配置 功能结构暴露 app.js API 地址、全局变量 后端接口泄露 utils/.js 加密算法、Token 逻辑 认证机制暴露 5.2 敏感信息搜索 1 # 搜索 API 地址 2 Select-String -Path .**.js -Pattern “https?://[\w.-]+” 3 4 # 搜索密钥 5 Select-String -Path .**.js -Pattern “key|secret|token|password” 6 7 # 搜索硬编码凭证 8 Select-String -Path .**.js -Pattern “LTAI|AccessKeyId” 5.3 测试检查清单 测试项 方法 工具 未授权访问 去掉 Token 访问 API Burp Suite 越权访问 修改用户 ID 参数 Postman 硬编码密钥 搜索代码中的 Key Select-String API 接口暴露 提取所有请求 URL 正则搜索 加密算法弱点 分析 utils 中的加密函数 代码审计 125

5.4 授权测试注意事项 ⚠ 法律提醒:

  1. 仅限授权范围内测试
  2. 不得泄露反编译源码
  3. 不得利用漏洞进行非授权访问
  4. 测试完成后删除敏感数据 快速命令参考 1 # ==================== 环境验证 ==================== 2 node —version # 检查 Node.js 3 npm —version # 检查 npm 4 npm config get registry # 检查镜像源 5 6 # ==================== 工具安装 ==================== 7 cd F:\wxappUnpacker-main # 进入工具目录 8 npm config set registry https://registry.npmmirror.com # 设置镜像 9 npm install # 安装依赖 10 node wuWxapkg.js —help # 验证工具 11 12 # ==================== 文件搜索 ==================== 13 Get-ChildItem -Path F:\ -Filter .wxapkg -Recurse -ErrorAction SilentlyCon tinue | Select-Object FullName 14 15 # ==================== 解包命令 ==================== 16 node wuWxapkg.js app.wxapkg # 基础解包 17 node wuWxapkg.js -d app.wxapkg # 保留中间文件 18 node wuWxapkg.js -o app.wxapkg # 仅解包不处理 19 node wuWxapkg.js sub.wxapkg -s=../master # 分包解包 20 21 # ==================== 信息搜索 ==================== 22 Select-String -Path .**.js -Pattern “https?://[\w.-]+” 23 Select-String -Path .***.js -Pattern “key|secret|token” 126

学习资源 资源 链接 说明 wxappUnpacker GitHub https://github.com/leoldev/w 工具源码 xappUnpacker 微信小程序官方文档 https://developers.weixin.qq. 理解正常结构 com/miniprogram/dev/frame work/ 看雪学院 https://bbs.pediy.com 逆向技术讨论 安全客 https://www.anquanke.com 漏洞案例分析 更新日志 日期 内容 2026-02-18 初始版本,记录完整安装和使用流程 2026-02-18 添加常⻅问题解决方案 2026-02-18 补充渗透测试应用章节 💡 提示:本笔记用于个人学习和授权渗透测试,请遵守相关法律法规,不得用于非法目的。 🔍 wxappUnpacker 功能真相:解密与反编译能力大揭 秘 简短回答:有基础反编译能力,但解密能力有限。对于加固包需要配合其他工具。 127

📊 一、功能能力对照表 功能 wxappUnpacker 能力 说明 解包 (.wxapkg 解压) ✅ 完全支持 核心功能,100% 成功 还原 WXML ✅ 支持 从编译格式还原为可读 WXML 还原 WXSS ✅ 支持 CSS 样式还原 还原 JS ⚠ 部分支持 可还原结构,但变量名无法恢复 解密加固包 ❌ 不支持 需要先脱壳 反混淆代码 ❌ 不支持 需配合其他工具 分包合并 ✅ 支持 -s 参数指定主包 保留中间文件 ✅ 支持 -d 参数 🔐 二、解密能力详解 2.1 能解密的包类型 包类型 加密程度 wxappUnpacker 成功率 普通包 无加密/基础加密 ✅ 直接解包 95%+ 微信官方编译 标准编译加密 ✅ 可还原 90%+ 分包 标准加密 ✅ 支持合并 90%+ 加固包 (腾讯乐固) 强加密/虚拟化 ❌ 无法直接解 0% 第三方加固 混淆 + 加密 ❌ 需先脱壳 0% 2.2 如何判断包是否加密/加固? 128

1 # 1. 尝试解包 2 node wuWxapkg.js your-app.wxapkg 3 4 # 2. 检查解包后的 app-service.js 5 # 如果看到以下特征,说明有加固/混淆: 6 7 # ❌ 加固特征: 8 var z = require(’./z.js’); // 加载加密模块 9 eval(z.d(…)); // 动态执行加密代码 10 _0x5a2b3c = function() {…} // 严重混淆变量名 11 12 # ✅ 正常包特征: 13 Page({ data: {…} }) // 标准小程序代码结构 14 wx.request({…}) // 标准 API 调用 🔧 三、反编译能力详解 3.1 反编译效果对氏 代码类型 原始代码 wxappUnpacker 还原 可读性 后 变量名 userToken _0x1a2b3c ❌ 无法恢复 函数名 calculatePrice _0x4d5e6f ❌ 无法恢复 代码结构 格式化良好 格式化良好 ✅ 完整保留 逻辑流程 清晰 清晰 ✅ 完整保留 字符串 明文 明文 ✅ 完整保留 加密算法 可⻅ 可⻅ ✅ 完整保留 3.2 实际案例对氏 原始代码(开发时): 129

1 // 用户登录函数 2 function userLogin(username, password) { 3 const token = generateToken(username, password); 4 wx.request({ 5 url: ‘https://api.example.com/login’, 6 data: { token: token } 7 }); 8 } wxappUnpacker 还原后: 1 // 变量名丢失,但逻辑完整 2 function _0x1a2b3c(_0x4d5e6f, _0x7g8h9i) { 3 const _0xj0k1l2 = _0x3m4n5o(_0x4d5e6f, _0x7g8h9i); 4 wx.request({ 5 url: ‘https://api.example.com/login’, 6 data: { token: _0xj0k1l2 } 7 }); 8 } 💡 结论:逻辑完整,变量名丢失。对于渗透测试来说,完全够用! 🛠 四、加固包解决方案(wxappUnpacker 搞不定的) 4.1 加固包识别 1 # 检查解包后的文件 2 dir app-service.js 3 4 # 如果文件大小异常小 (<10KB) 或全是乱码 5 # 说明有加固 加固类型 识别特征 解决方案 腾讯乐固 lib/ 目录有 libsecexe. 使用乐固脱壳工具 so 梆梆安全 文件名含 bangcle 使用梆梆脱壳机 爱加密 配置文件含 ijiami 使用爱加密脱壳工具 130

自定义加固 严重混淆 + 虚拟化 手动逆向 + Frida 脱壳 4.2 加固包脱壳流程 1 ┌─────────────────────────────────────────────────────────┐ 2 │ 加固包处理流程 │ 3 ├─────────────────────────────────────────────────────────┤ 4 │ │ 5 │ 1. 获取加固 .wxapkg │ 6 │ ↓ │ 7 │ 2. 使用专用脱壳工具 (非 wxappUnpacker) │ 8 │ ↓ │ 9 │ 3. 获取脱壳后的 .wxapkg │ 10 │ ↓ │ 11 │ 4. 使用 wxappUnpacker 解包 │ 12 │ ↓ │ 13 │ 5. 获得可读源码 │ 14 │ │ 15 └─────────────────────────────────────────────────────────┘ 4.3 推荐脱壳工具 工具 支持加固类型 价格 获取方式 WxapkgDecoder 腾讯乐固、梆梆 部分收费 GitHub 微信小助手 多种加固 免费 第三方工具 Frida 脱壳脚本 自定义加固 免费 需自行编写 在线脱壳服务 常⻅加固 收费 淘宝/闲⻥ 📋 五、wxappUnpacker 完整功能清单 131

✅ 支持的功能 1 # 1. 基础解包 2 node wuWxapkg.js app.wxapkg 3 4 # 2. 保留中间文件(调试用) 5 node wuWxapkg.js -d app.wxapkg 6 7 # 3. 仅解包不处理 8 node wuWxapkg.js -o app.wxapkg 9 10 # 4. 分包合并 11 node wuWxapkg.js sub.wxapkg -s=../master 12 13 # 5. 批量解包 14 node wuWxapkg.js *.wxapkg 15 16 # 6. 指定输出目录 17 node wuWxapkg.js -o ./output app.wxapkg ❌ 不支持的功能 功能 原因 替代方案 解密加固包 无脱壳模块 先用专用脱壳工具 反混淆代码 变量名已丢失 手动分析逻辑 还原注释 编译时已删除 无法恢复 还原原始变量名 编译时已混淆 无法恢复 处理 SO 层加密 非 JS 层逻辑 需要 IDA/Ghidra 🎯 六、实战判断流程 132

1 # ==================== 判断流程图 ==================== 2 3 # 1. 尝试解包 4 node wuWxapkg.js your-app.wxapkg 5 6 # 2. 检查解包结果 7 cd your-app 8 dir 9 10 # 3. 判断是否成功 11 # ✅ 成功标志: 12 # - app.json 存在 13 # - app.js 可读 14 # - pages/ 目录完整 15 16 # ❌ 失败标志: 17 # - app-service.js 全是乱码 18 # - 文件大小异常 (<10KB) 19 # - 报错 “Unknown format” 20 21 # 4. 如果失败,说明有加固 22 # → 使用专用脱壳工具 23 # → 脱壳后再用 wxappUnpacker 💡 七、渗透测试建议 7.1 工具组合拳 场景 工具组合 效果 普通小程序 wxappUnpacker + VS Code ⭐⭐⭐⭐⭐ 完全够用 轻度混淆 wxappUnpacker + js-beautify ⭐⭐⭐⭐ 可读性提升 加固包 脱壳工具 + wxappUnpacker ⭐⭐⭐⭐ 需额外步骤 严重混淆 wxappUnpacker + Frida 动态 ⭐⭐⭐⭐⭐ 最佳方案 调试 133

7.2 推荐工作流程 1 1. 获取 .wxapkg 包 2 ↓ 3 2. 用 wxappUnpacker 尝试解包 4 ↓ 5 3. 检查解包结果 6 ├── ✅ 成功 → 直接静态分析 7 └── ❌ 失败 → 有加固 8 ↓ 9 使用专用脱壳工具 10 ↓ 11 脱壳后再次解包 12 ↓ 13 静态分析 + 动态调试 ✅ 八、总结 问题 答案 能解包吗? ✅ 能,这是核心功能 能解密加固包吗? ❌ 不能,需先脱壳 能反编译吗? ✅ 能还原结构,但变量名丢失 能反混淆吗? ❌ 不能,需配合其他工具 渗透测试够用吗? ✅ 90% 场景完全够用 需要额外工具吗? ⚠ 加固包需要脱壳工具 🚀 九、快速验证命令 134

1 # 1. 测试解包能力 2 cd F:\wxappUnpacker-main 3 node wuWxapkg.js “你的 wxapkg 文件路径” 4 5 # 2. 检查解包结果 6 cd 解包后的目录 7 dir 8 9 # 3. 查看 app-service.js 大小 10 (Get-Item app-service.js).Length 11 12 # 4. 判断是否加固 13 # <10KB = 可能加固 14 # >100KB = 正常包 💡 最终结论:wxappUnpacker 是小程序渗透测试的必备基础工具,对于未加固的小程序完全够用。遇 到加固包时,配合脱壳工具 + Frida 动态调试,可以解决 95% 以上的场景! 你的工具已经安装好了,现在找个 .wxapkg 文件试试手吧! 🎯 135

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

微信小程序反编译
https://lansame.top/posts/miniapp-decompile/
作者
Lansame
发布于
2026-06-09
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录