微信小程序抓包与反编译
Published in:2023-06-29 | category: 前端 网络安全

抓包

首先我们这里的要准备一个安卓模拟器,这里我用的雷电模拟器,这个也可以用其他的模拟器可以自行选择。

在模拟器上下载微信并登录之后找到对应的⼩程序点击打开即可(因为兼容性问题,在 安卓模拟器中微信⼩程序可能会闪退,但这并不影响后续操作,⼩程序数据包已经成⾃带下载了)。

接 着我们便能在安卓保存路径:/data/data/com.tencent.mm/MicroMsg/{⽤户 ID}/appbrand/pkg/ 下;iOS 保存路径:/var/mobile/Containers/Data/Application/{程序 UUID}/Library/WechatPrivate/{⽤户 ID}/WeApp/LocalCache/release/{⼩程序 ID}/ )下找到⼩程 序包。

接着找到上面的路径,然后全部选择。

选择以后点击打开安卓文件夹


然后就能看到它被提取出来了

这⾥我们使⽤ wxappUnpacker 解包⼯具(下载地址:https://data.hackinn.com/tools/wxappUnpacker.zip(,此下载包为⼆次优化版本),直接使⽤“node wuWxapkg.js ⼩程序包名”命令即可⼀键解包(需 提前安装 node.js 及其他组件,详⻅包内使⽤说明),⾮常⽅便:[nodejs 安装]

然后解包

最后把提取出来的文件夹放在微信开发者工具里就可以分析了.     [微信开发者工具下载] (https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)

反编译

环境工具准备

  • node.js 运行环境
  • 小程序解密脚本
  • 反编脚本
  • 微信小程序开发者工具

以上工具打包分享
链接: https://pan.baidu.com/s/1SE9uNu5Yxwwmbpw1ils0oA?pwd=zzy6 提取码: zzy6

下载工具包后进行解压首先安装 node.js 环境,安装完成后通过 cmd 运行 node -vnpm -v查看版本是否安装成功。

[image.png

小程序包下载

PC 端和手机端小程序在运行时会将程序包缓存到本地,但是程序包经过了加密,我们不能够直接进行反编解包,这里我们需要首先对小程序包进行解密后才能够对其进行反编。
小程序包的解密首先需要找到小程序包缓存到本地的位置,这里以 PC 端为例不演示手机端。打开微信设置-文件管理,打开下图中的路径找到下图路径中 WeChat Files 文件夹。默认微信缓存文件在系统 C 盘用户文档目录下,我这里微信缓存位置做了修改。
[image.png
第二种方法更为简单,我们直接将 Applet 文件夹下的所有小程序缓存包删除掉,再访问一次将要准备反编的小程序,这时 Applet 下就只有这一个小程序的缓存包了,简单粗暴哈哈哈。

小程序包解密

下面我们就使用小程序包解密工具对包进行解密,解压小程序包解密工具如下图运行 UnpackMiniApp.exe
[image.png
解密成功后输出到 wxpack 文件夹下,文件格式不变。

小程序包反编译

经过解密后的的包格式依然是 **.wxapkg **,下一步我们需要对包进行反编译就可以获取小程序的源代码。
我们使用中的 wxappUnpacker 脚本对其进行反编译。步骤如下:
解压 wxappunpacker 进入这个目录后在目录下运行 cmd 执行命令
node wuWxapkg.js D:\小程序包解密\wxpack\wx8f446acf8c4a85f5.wxapkg ## 其中 D:\小程序包解密\wxpack\wx8f446acf8c4a85f5.wxapkg 为解密后的小程序包路径位置
[image.png

源码查看

完成解密和反编后我们已经获取到了小程序包的源码,最后我们可以使用微信小程序开发工具进行编辑开发或查看审阅源码。
在我分享的工具包中提供了 win64 版本的微信小程序开发工具安装包,如需不同版本的安装包也可自行到微信开发者官方网页进行下载https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
安装完成后我们运行工具使用游客模式登录
[image.png
我在前面有提到手机端的微信小程序,实际上手机端和 PC 端的小程序包都是相同格式的只要我们找到手机小程序包缓存位置将包导出到电脑中也可进行反编,在 PC 端进行反编相对于从手机提取小程序包要方便一些。

Prev:
同源策略
Next:
跨站脚本攻击