小程序反编译
前言
在日常的渗透测试项目中经常会遇到小程序测试的场景,而金融项目中又都对数据包进行了加密处理或者做了抓包限制,对我们的渗透测试造成了很大的困扰,此时可以通过对小程序进行解包,然后导入到微信开发者工具中来对小程序进行调试。
环境工具准备
- root的Android手机或者模拟器
- 安卓端RE管理器(reguanliqi.apk)
- node.js运行环境
- 解包工具(wxappUnpacker-master)
- 微信开发者工具
以上工具打包分享:
链接: https://pan.baidu.com/s/1w842n2CZ5X2wuY8xWAbDfA 提取码: gxvp
1)下载工具包后进行解压,首先安装node.js
,安装完成后使用终端输入node -v
和npm -v
验证是否安装成功
2)下载解包工具(wxappUnpacker-master),GitHub上也有相同功能的解包工具可以下载。下载解压后使用终端工具进入wxappUnpacker-master所在的文件夹下,安装运行工具所需的依赖模块,命令如下:(我前面提供的工具包中解包工具依赖已经安装完成了,一般情况不需要自行下载了)
npm installnpm install esprima
npm install css-tree
npm install cssbeautify
npm install vm2
npm install uglify-es
npm install js-beautify
注意:依赖模块必须安装在脚本所在的根目录下,如下图所示,红框中为依赖模块
小程序wxapkg文件获取
安卓平台中小程序wxapkg文件存放在此路径中:
/data/data/com.tencent.mm/MicroMsg/{一个32位的16进制文件}/appbrand/pkg/
1)为了防止其他小程序生成的wxapkg文件与目标小程序的wxapkg文件混在一起,我们首先删除所有的wxapkg文件。打开Android手机中的RE管理器,进入wxapkg文件存放路径,删除pkg文件夹。
2)在微信中打开目标小程序,尽可能的点击小程序的每个功能模块,目的是为了让小程序尽量缓存完整的wxapkg文件。
3)查看小程序wxapkg文件,进入wxapkg文件存放路径,红框中两个wxapkg包明显过大,属于微信的系统包,不是小程序缓存的数据包,小程序缓存wxapkg包最大一般在3M左右。
4)把上图中第一个和第四个小程序缓存的wxapkg包拷贝到电脑上,放在解包工具的文件夹下。如下图,我命名为test
小程序包反编译
一般小程序会有分包和主包,一般情况下文件最大的那个就是主包,我们优先反编译主包文件。使用终端进入wxappUnpacker-master
工具目录下,运行wuWxapkg.js
脚本进行反编译,反编译分包与主包命令不同,反编译分包时需要指明主包所在的文件夹,命令格式如下:
反编译主包:node wuWxapkg.js 主包名.wxapkg
反编译分包:node wuWxapkg.js 分包名.wxapkg -s=主包文件夹
反编译主包,命令如下:
node wuWxapkg.js ./test/_-1800698071_76.wxapkg
显示File done
表示主包成功反编译完成,如下图
反编译分包,命令如下:
node wuWxapkg.js ./test/_119280429_76.wxapkg -s=_-1800698071_76
提示Decompile success!
表示分包反编译成功,如下图
合并主包分包
参照主包的app.json文件,根据root值看到分包名称将对应的分包文件放到主包中的路径下面
将分包文件复制到主包相应路径下面
导入到微信开发者工具中进行调试
打开微信开发者工具,点击导入按钮
选择反编译文件的主包文件夹
点击使用测试号
,然后确定
微信开发者工具勾选如下选项即可成功运行。(如遇到其他报错,仔细观察console控制台报错信息,自行百度处理报错内容)
小程序运行成功截图如下:
大功告成,可以自由的进行测试了!!!