微信小程序反编译可以通过对小程序包进行反编来获取小程序源码,在一次信息收集的过程中对某公司的APP、微信公众号、小程序进行抓包数据分析寻找接口等有用的信息时,在抓包过程中由于微信的反抓包机制实际测试过程中遇到一些问题,导致通过直接抓包的方式抓取小程序数据失败。后通过一些方式了解到小程序反编,于是想到是否可以采取这种方式反编小程序后进行源码审计。这篇文章主要介绍了微信小程序反编的方法在这里与大家进行分享一同学习。
本次为大家带来的是小程序反编译工具神器unveilr——一键解分包
✨新版本特性
- 🔥支持自动解密(
windows
从路径上提取wxAppId
) - 🔥自动合并子包
- 🔥支持解析最新版
wxapkg
(APP_V3
/APP_V4
/APP_SUBPACKAGE_V2
) - 🔥支持解析最新版小程序插件 (
APP_PLUGIN_V1
) - 🔥采用
@babel/core
直接解析语法树,精准提取源码(1.x
是正则提取)
一、首先下载反编译工具
下载地址:
https://drive.uc.cn/s/324f2828efce4
卡密购买地址:https://shop.openal.lat
叨客专属优惠码:最高可优惠120元!!
天卡:daoke-1
三天卡:daoke-2
月卡:daoke-3
年卡:daoke-4
二、获取小程序包
本工具可以直接通过电脑版微信获取,无需再下载模拟器!!
1.确定微信文件保存路径
2.选择打开文件夹,然后返回上层,找到Applet文件夹
在Applet文件夹下,就是小程序路径
3.打开小程序,尽可能把小程序的页面都浏览一遍,确认加载完整所有分包。
4.打开Applet文件夹下的wx开头文件夹(以wxd05cfe5c3529ad94为例),点击数字文件夹(21),里面的__APP__.wxapkg就是主包(如果有分包的话,同样会显示在一起)。
5.将__APP__.wxapkg转移到wxd05cfe5c3529ad94文件夹内,即,和数字在同一级
6.将wxd05cfe5c3529ad94文件夹复制到和工具同一级
3.工具的使用
下面以windows为例
1.打开终端(管理员)
定位到工具所在路径,如
cd E:\小程序\反编译
2.使用卡密
.\unveiler@2.4.1-win-x64.exe -T 495211b7-4d3d-44b6-8404-be90977ed47e
//unveiler@2.4.1-win-x64.exe为工具完整名字
//T为消耗token,增加使用时长
// 495211b7-4d3d-44b6-8404-be90977ed47e为卡密
//千万注意空格!!
显示上面的字样就是成功了。
卡密购买地址:https://shop.openal.lat
叨客专属优惠码:最高可优惠120元!!
天卡:daoke-1
三天卡:daoke-2
月卡:daoke-3
年卡:daoke-4
3.使用工具
当wxd05cfe5c3529ad94文件夹复制到和工具同一级时,直接使用即可
.\unveiler@2.4.1-win-x64.exe wx -f wxd05cfe5c3529ad94
还有其他命令行
子命令 | 参数 | 解释 |
---|---|---|
-l, --log-level <level> |
设置日志等级 debug ,info ,warn ,error 默认 info |
|
-v, --version |
打印版本号并退出 | |
-P, --profile |
显示当前设备信息并退出 | |
-T, --use-token <token> |
消耗token增加可用时长并退出 | |
-U, --update |
检查更新和升级 | |
-C, --clean-cache |
清除缓存并退出 | |
-X, --set-proxy <proxy> |
手动配置代理,默认取 env.HTTPS_PROXY | |
--unset-proxy |
取消配置代理 | |
wx-hook |
自动开启devtools 并且过掉checksum |
|
wx |
<packages...> |
包的路径,可以是多个,也可以是一个目录 |
wx |
-s, --scan-sensitive |
开启敏感信息扫描 |
wx |
-i, --appid <appid> |
手动提供appid (仅在评估windows 上的包时有效) |
wx |
-f, --format |
格式化输出 |
wx |
--no-clear-parsed |
解析后的残留文件将不会被清除 |
wx |
--no-clear-save |
不清除已经存在的解析结果 |
wx |
--no-parse |
只提取文件,但不会解析 |
wx |
--clear-output |
当输出目录不为空时程序将终止,提供该参数表示强制清空输出目录 |
wx |
-d, --depth <depth> |
设置从目录中查找深度,默认: 1 设置为0 时不限制深度 |
wx |
-o, --output <path> |
设置输出目录 |
wx |
-p, --pack |
将目录打包 |
wx |
-w, --watch |
监听将要打包的文件夹,并自动打包 |
wx |
-e, --encrypt |
将目录打包并加密 |
wx |
-h, --help |
打印帮助信息 |
📝常用示例
以下命令的
unveiler
只是示例,实际使用时根据具体情况替换,windows
可能是unveiler@xxx.exe
等等
1.全局参数示例
- 代理可以自己指定,也会自动读取环境变量 https_proxy (不区分大小写)
- 配置代理
unveiler -X http://127.0.0.1:8080
- 取消代理
unveiler --unset-proxy
- 查看设备信息
unveiler -P
- 检查更新版本
unveiler -U
- 清除程序缓存
unveiler -C
(一般出现异常后尝试使用此参数) - 使用token
unveiler -T xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
2.代码审计
现在解包相关的都需要带上
wx
子命令
-
常规使用
unveiler wx /path/to/pkg/dir
-
指定输出路径
unveiler wx /path/to/pkg/dir -o /path/to/output/dir
-
格式化输出结果
unveiler wx -f /path/to/pkg/dir
3.敏感信息扫描
- 开始敏感信息扫描
unveiler wx -sf /path/to/pkg/dir
4.打包功能的使用
- 目前比较稳定的打包是打包未被解析的源文件
- 所以建议整两套代码,一套用于审计,一套用于打包
- 目前只能每次打包一个文件
- 假设现在的目录为
/path/to/pkg/__APP__.wxapkg
- 只提取单个包而不做解析
unveiler wx --no-parse -f /path/to/pkg/__APP__.wxapkg -o /dist/__APP__
- 改动了代码之后在
/dist/__APP__
同步修改(自行搜索找到对应位置) - 开始打包
unveiler -p /dist/__APP__
- 若要频繁修改建议使用
-w
参数,
- 可以在
/dist/__APP__
文件夹下有文件改动时将会自动打包 - 例如:
unveiler -wp /dist/__APP__
- 打包后重新替换需要开启
wx-hook
即可加入考研、考公考编、四六级、计算机等级考试、教师编等【免费网课网盘群组】
易和谐资料优先在群组内补发
或者夸克APP内搜索群号:970062162
暂无评论内容