微信小程序&反编译解包&HOOK注入
思考:js逆向为什么会讲到小程序,不会说app 微信特定版本和小程序版本 https://github.com/tom-snow/wechat-windows-versions https://github.com/JaveleyQAQ/WeChatOpenDevTools-Python
微信小程序反编译
https://github.com/biggerstar/wedecode
https://github.com/Angels-Ray/UnpackMiniApp
下载安装上面两个工具
随便选择一个小程序运行

运行wedecode工具

选择第三个选项,

打开文件夹后进入上一级目录,然后点击进入applet目录。此时会有类似下面的文件

一串字符那个文件就是我们打开的小程序。
进去之后因为现在的大多数小程序都有加密,先使用另外一款工具进行解密
运行加密软件后如下图选择文件解密

加密后如下会给出一个目录文件

基础解密后文件所处的文件夹。
回到第一个工具。输入刚才的文件夹路径路径

然后就开始解密了。解密完成给出下图所示的路径

解密结果

成功反编译
调试
使用微信开发者工具对于反编译出来的项目,可能无法做到很好的调试
本人使用的微信版本是3.9.10.19,小程序可以通过进程查看,我的是8555_X64,
在调试如果遇到微信小程序版本过高,可以参考本人GitHub其他文件夹中微信修改小程序版本的文章
WechatOpenDevTools-Python工具可以对小程序进行很好的调试
工具链接:https://github.com/JaveleyQAQ/WeChatOpenDevTools-Python

下载工具后直接运行。就可以。然后打开微信小程序。

此时就会有上图所示的选项,点击后就可以调试了。
如图所示

既然已经可以通过工具进行F12调试了,为什么有时候仍然需要反编译?
案例1:分析加密逻辑
- 如果小程序使用 自定义加密算法(如对API请求参数签名),直接调试可能只能看到 加密后的结果,而无法知道 加密过程。
- 反编译 可以找到加密函数(如
md5、AES),并分析其实现方式。
案例2:绕过授权检测
- 某些小程序会检测 是否在官方环境运行(如
wx.getSystemInfoSync()判断是否在微信里)。 - 直接调试 可能无法绕过,但 反编译 可以修改检测逻辑,使其在非官方环境运行。
案例3:研究闭源小程序的实现
- 如果你想学习某个 优秀小程序的架构(如美团、拼多多),直接调试只能看到 片段,而 反编译 可以获取完整代码结构。
可以调试后结合反编译就可以对小程序的js进行逆向了,分析加密手法,sign签名等,和浏览器调试差不多。