小程序逆向工具
打开微信开发者工具,小程序逆向工随便找个小程序包,小程序逆向工解压后看到一堆 我常用的小程序逆向工工具是 解出来的 WXML 和 WXSS 的还原更麻烦些。WXML 会被编译成 动态调试是另一条路。微信开发者工具的 抓包工具 有个细节值得注意:小程序的 工具终究是辅助。真正花时间的是理解小程序的运行机制——比如 .wxapkg 文件——这就是小程序逆向工小程序的编译产物。很多人第一反应是小程序逆向工直接用文本编辑器打开,结果满屏乱码。小程序逆向工逆向的小程序逆向工第一步,就是小程序逆向工把这些文件还原成可读的代码。unveilr,一个用 Go 写的小程序逆向工命令行程序。它的小程序逆向工逻辑很直接:扫描指定目录下的所有 .wxapkg,按包名和版本号拆解,小程序逆向工输出成结构化的小程序逆向工文件夹。跑一条 unveilr -d ./target,小程序逆向工几秒钟后就能看到 app-service.js、小程序逆向工app-config.json 这些文件。小程序逆向工比起早年的 wxappUnpacker,它省去了手动处理分包和插件的麻烦。不过 wxappUnpacker 依然有它的价值——当你需要处理老版本微信的加密包时,它的兼容性反而更好。app-service.js 通常是压缩过的,变量名全是 a、b、c。这时候得靠 js-beautify 做格式化,再配合 source-map 还原原始目录结构。有些团队会保留 sourcemap 文件,那基本等于直接拿到源码。我见过一个电商小程序,开发者忘了删 .map 文件,结果连注释里的接口文档都看得一清二楚。这种疏忽不算少见,尤其是赶工期的项目。$$ 开头的函数调用,WXSS 则被转成 JS 对象。有个叫 wcsc 的反编译工具能处理 WXSS,但遇到 @import 嵌套时偶尔会丢样式。我一般会手动补全,顺便检查 rpx 到 px 的转换比例——不同机型上这个值会变,逆向时得留个心眼。vConsole 可以注入到小程序里,但需要先绕过 checkSiteMap 的校验。具体做法是修改 app-config.json 里的 debug 字段,再把 vConsole 的脚本塞进 app-service.js 开头。重启后就能在手机上看 console 输出。这招对分析网络请求特别有用——有些小程序会把关键参数放在 wx.request 的 header 里,光看静态代码容易漏掉。Charles 或 Fiddler 配合 SSL Pinning 绕过,能拿到完整的 API 交互。但微信从 8.0.22 版本开始加强了证书校验,JustTrustMe 这类 Xposed 模块经常失效。我现在的做法是用 frida 挂载 okhttp3 的 CertificatePinner 类,动态替换校验逻辑。这需要 root 权限,模拟器上跑比较稳。app-service.js 里经常藏着 eval 或 Function 构造器。这是开发者用来动态加载远程代码的,逆向时得手动跟踪执行流。我遇到过一个小程序,核心逻辑全放在 eval 里,静态分析完全找不到。最后是用 frida hook 了 eval 函数,把参数打印出来才拿到明文。Page 和 Component 的生命周期怎么映射到原生 WebView,setData 的 diff 算法如何影响数据流。这些知识决定了你能否从一堆混淆代码里理出业务逻辑。我见过有人拿着 unveilr 解包后直接搜 password 字段,结果被 base64 编码的假数据骗了——逆向的功夫,一半在工具,一半在脑子。
-
上一篇
-
下一篇
- 随机阅读
- 搜索
-
- 友情链接
-