存在分包的微信小程序解包反编译还原(含报错处理与代码修复)
字数 1670 2025-08-22 18:37:27

微信小程序解包反编译还原完整教程(含分包处理与报错修复)

一、前言

本教程详细讲解微信小程序的解包、反编译和还原全过程,特别针对存在分包的小程序处理以及常见报错解决方案。通过本教程,您将掌握:

  1. 常规微信小程序逆向解析的标准流程
  2. 解决分包小程序使用wxappUnpacker时的报错问题
  3. 正确处理子包解包时的路径指定问题
  4. 完整代码修复方案

二、环境准备

在开始前,请确保准备好以下工具和环境:

  1. 微信App:用于获取小程序缓存文件
  2. UnpackMiniApp.exe:小程序解密工具(来自代码果)
  3. Node.js环境
    • 安装Node.js(建议使用LTS版本)
    • 配置npm源(可参考国内镜像源如淘宝npm镜像)
  4. wxappUnpacker:小程序反编译工具
  5. 微信开发者工具(可选):用于查看还原后的项目

三、小程序解密步骤

1. 获取小程序缓存文件

  1. 打开微信客户端,进入目标小程序
  2. 点击微信左下角的"设置"按钮
  3. 找到文件缓存目录(通常位于WeChat Files/Applet/下)
  4. 搜索.wxapkg后缀文件或直接搜索__APP__.wxapkg文件
  5. 根据修改日期和时间确认目标文件

注意:如果发现多个.wxapkg文件,说明该小程序存在分包结构。

2. 使用UnpackMiniApp.exe解密

  1. 运行UnpackMiniApp.exe解密程序
  2. 按照程序提示,创建wxpack文件夹(用于存放解密结果)
  3. 选择微信小程序的加密包(.wxapkg文件)进行解密
  4. 解密完成后,重命名生成的文件(重要:分包会以相同命名方式生成,不重命名会导致覆盖)

命名建议

  • 主包:解密完成包.wxapkg
  • 分包:解密完成包_分包1.wxapkg解密完成包_分包2.wxapkg

四、解密包反编译还原

1. 安装配置wxappUnpacker

  1. 克隆或下载wxappUnpacker仓库
  2. 在wxappUnpacker目录下执行:
    npm install
    
    安装所需依赖

2. 主包反编译

  1. 将解密后的主包文件(如解密完成包.wxapkg)移动到wxappUnpacker下的testpkg文件夹
  2. 执行反编译命令:
    node wuWxapkg.js ./testpkg/解密完成包.wxapkg
    

3. 分包处理常见报错及修复

报错1:subPackage.pages is not iterable

错误信息

wuConfig.js:49
for (let page of subPackage.pages) {
                ^
TypeError: subPackage.pages is not iterable

解决方案

修改wuConfig.js文件,添加数组校验:

if (Array.isArray(subPackage.pages)) {
    for (let page of subPackage.pages) {
        let items = page.replace(root, '');
        newPages.push(items);
        let subIndex = pages.indexOf(root + items);
        if (subIndex !== -1) {
            pages.splice(subIndex, 1);
        }
    }
} else {
    console.log('subPackage.pages is not an array:', subPackage.pages);
}

操作步骤

  1. 删除之前解包创建的文件夹
  2. 重新执行反编译命令

报错2:子包解包路径错误

错误信息

wuWxapkg.js:176
throw new Error("检测到此包是分包后的子包, 请通过 -s 参数指定存放路径后重试, 如node wuWxapkg.js -s=/xxx/xxx ./testpkg/test-pkg-sub.wxapkg");
Error: 检测到此包是分包后的子包, 请通过 -s 参数指定存放路径后重试, 如node wuWxapkg.js -s=/xxx/xxx ./testpkg/test-pkg-sub.wxapkg

解决方案

使用正确的命令格式,特别注意路径参数要用引号括起来:

node wuWxapkg.js testpkg/解密完成包_分包1.wxapkg "-s=../解密完成包"

或者使用批处理文件(如bingo.bat):

bingo.bat testpkg/解密完成包_分包1.wxapkg "-s=../解密完成包"

注意-s参数指定的路径是相对于主包解包后生成的目录

4. 合并分包内容

  1. 将所有分包反编译完成后
  2. 将分包内容复制粘贴到主包对应目录中
  3. 确保文件结构完整

五、结果分析与敏感信息查找

  1. 使用微信开发者工具打开还原后的项目(可选)
  2. 全局搜索敏感信息(快捷键Ctrl+Shift+F
    • 重点关注关键词:secretpasswordkeytoken
    • 特别注意云存储的AK/SK等凭证信息
  3. 分析可能的业务逻辑漏洞或配置不当

六、参考文献

  1. Node.js安装与npm源配置参考:
    https://blog.csdn.net/qq_42006801/article/details/124830995

七、注意事项

  1. 本教程仅用于安全研究和学习目的
  2. 请勿将技术用于非法用途
  3. 处理商业小程序前请确保获得合法授权
  4. 解密和反编译过程可能因微信版本更新而失效,需及时关注工具更新

通过本教程,您应该能够完整地完成微信小程序的解包、反编译和还原工作,包括处理分包结构和解决常见报错问题。

微信小程序解包反编译还原完整教程(含分包处理与报错修复) 一、前言 本教程详细讲解微信小程序的解包、反编译和还原全过程,特别针对存在分包的小程序处理以及常见报错解决方案。通过本教程,您将掌握: 常规微信小程序逆向解析的标准流程 解决分包小程序使用wxappUnpacker时的报错问题 正确处理子包解包时的路径指定问题 完整代码修复方案 二、环境准备 在开始前,请确保准备好以下工具和环境: 微信App :用于获取小程序缓存文件 UnpackMiniApp.exe :小程序解密工具(来自代码果) GitHub地址: https://github.com/Angels-Ray/UnpackMiniApp Node.js环境 : 安装Node.js(建议使用LTS版本) 配置npm源(可参考国内镜像源如淘宝npm镜像) wxappUnpacker :小程序反编译工具 GitHub地址: https://github.com/Angels-Ray/wxappUnpacker 微信开发者工具 (可选):用于查看还原后的项目 三、小程序解密步骤 1. 获取小程序缓存文件 打开微信客户端,进入目标小程序 点击微信左下角的"设置"按钮 找到文件缓存目录(通常位于 WeChat Files/Applet/ 下) 搜索 .wxapkg 后缀文件或直接搜索 __APP__.wxapkg 文件 根据修改日期和时间确认目标文件 注意 :如果发现多个 .wxapkg 文件,说明该小程序存在分包结构。 2. 使用UnpackMiniApp.exe解密 运行UnpackMiniApp.exe解密程序 按照程序提示,创建 wxpack 文件夹(用于存放解密结果) 选择微信小程序的加密包( .wxapkg 文件)进行解密 解密完成后,重命名生成的文件( 重要 :分包会以相同命名方式生成,不重命名会导致覆盖) 命名建议 : 主包: 解密完成包.wxapkg 分包: 解密完成包_分包1.wxapkg 、 解密完成包_分包2.wxapkg 等 四、解密包反编译还原 1. 安装配置wxappUnpacker 克隆或下载wxappUnpacker仓库 在wxappUnpacker目录下执行: 安装所需依赖 2. 主包反编译 将解密后的主包文件(如 解密完成包.wxapkg )移动到wxappUnpacker下的 testpkg 文件夹 执行反编译命令: 3. 分包处理常见报错及修复 报错1: subPackage.pages is not iterable 错误信息 : 解决方案 : 修改 wuConfig.js 文件,添加数组校验: 操作步骤 : 删除之前解包创建的文件夹 重新执行反编译命令 报错2:子包解包路径错误 错误信息 : 解决方案 : 使用正确的命令格式,特别注意路径参数要用引号括起来: 或者使用批处理文件(如 bingo.bat ): 注意 : -s 参数指定的路径是相对于主包解包后生成的目录 4. 合并分包内容 将所有分包反编译完成后 将分包内容复制粘贴到主包对应目录中 确保文件结构完整 五、结果分析与敏感信息查找 使用微信开发者工具打开还原后的项目(可选) 全局搜索敏感信息(快捷键 Ctrl+Shift+F ) 重点关注关键词: secret 、 password 、 key 、 token 等 特别注意云存储的AK/SK等凭证信息 分析可能的业务逻辑漏洞或配置不当 六、参考文献 Node.js安装与npm源配置参考: https://blog.csdn.net/qq_ 42006801/article/details/124830995 七、注意事项 本教程仅用于安全研究和学习目的 请勿将技术用于非法用途 处理商业小程序前请确保获得合法授权 解密和反编译过程可能因微信版本更新而失效,需及时关注工具更新 通过本教程,您应该能够完整地完成微信小程序的解包、反编译和还原工作,包括处理分包结构和解决常见报错问题。