文章目录 前言一、前置条件二、操作步骤1.进入adb shell2.提取源码编译文件3.反编译 补充
前言 对微信小程序进行源码反编译,一般目的为: 获取js签名算法,过数据包的防篡改策略获取接口的判断逻辑,一般用于修改返回包来达到未授权的效果,在尝试无法找到争取的返回值的时候,需要从源码来进行构造
本文旨在记录如何对一个微信小程序进行编译获取其源码,后续分析不做分享,因目的不同,分析的方式也会不同
一、前置条件
需要一台root了的安卓测试手机,root的方式请自行查找。如果是红米手机,可以参考我的root方式,博客链接
本文演示的步骤,基于macbook m1进行,其他设备操作基本也差不多
二、操作步骤 1.进入adb shell
命令如下(示例):
(base) ? ~ adb shelldavinci:/ $ whoamishell# 提权davinci:/ $ su rootdavinci:/ # whoamiroot 2.提取源码编译文件
代码如下(示例):
davinci:/ # cd /data/data/com.tencent.mm davinci:/data/data/com.tencent.mm # ls 982178cdd5589cb042c4efb99be0333c WebNetFile ipcallCountryCodeConfig.cfg recovery version_history.cfgCheckResUpdate appbrand last_avatar_dir regioncode webcomptClickFlow autoauth.cfg luckymoney snsreport.cfg webserviceCompatibleInfo.cfg channel_history.cfg media_export.proto staytime.cfg webview_tmplCronetCache configlist mmslot systemInfo.cfgNowRev.ini deviceconfig.cfg mobileinfo.ini textstatusProcessDetector ee1da3ae2100e09165c2e52382cfe79f newmsgringtone tmpWebCanvasPkg heavy_user_id_mapping.dat patch_ver_history.bin trace
重点关注一个很长的用户随机码,比如ee1da3ae2100e09165c2e52382cfe79f和982178cdd5589cb042c4efb99be0333c,分别访问判断即可
davinci:/data/data/com.tencent.mm/MicroMsg # cd ./982178cdd5589cb042c4efb99be0333c/ davinci:/data/data/com.tencent.mm/MicroMsg/982178cdd5589cb042c4efb99be0333c # cd appbrand/ davinci:/data/data/com.tencent.mm/MicroMsg/982178cdd5589cb042c4efb99be0333c/appbrand # lspagesidx pkg web_renderingcachedavinci:/data/data/com.tencent.mm/MicroMsg/982178cdd5589cb042c4efb99be0333c/appbrand # cd pkg/ davinci:/data/data/com.tencent.mm/MicroMsg/982178cdd5589cb042c4efb99be0333c/appbrand/pkg # ls_-1223314631_166.wxapkg _-1991183043_171.wxapkg _-86252332_166.wxapkg _1233860900_205.wxapkg _1233860900_230.wxapkg _2106768478_166.wxapkg_-1223314631_167.wxapkg _-289032338_166.wxapkg _-86252332_167.wxapkg _1233860900_206.wxapkg _1233860900_231.wxapkg _2106768478_171.wxapkg_-1223314631_168.wxapkg _-289032338_167.wxapkg _-86252332_168.wxapkg _1233860900_207.wxapkg _1233860900_232.wxapkg _288413523_8.wxapkg
这些wxapkg即编译后的小程序源码,为了准确找到目标小程序对应的wxapkg文件,可以重新访问目标小程序,之后对这些包进行排序,找到最新的
davinci:/data/data/com.tencent.mm/MicroMsg/982178cdd5589cb042c4efb99be0333c/appbrand/pkg # ls -lt total 238092-rw——- 1 u0_a239 u0_a239 907997 2021-12-26 15:25 _255193015_171.wxapkg-rw——- 1 u0_a239 u0_a239 427489 2021-12-25 09:37 _1245338104_171.wxapkg-rw——- 1 u0_a239 u0_a239 258272 2021-12-25 09:35 _2106768478_171.wxapkg-rw——- 1 u0_a239 u0_a239 745490 2021-12-25 09:35 _927440678_171.wxapkg
找到了目标文件之后,需要将其挪到电脑的目录下。mac环境下,可以下载一个Android文件传输工具,之后通过mv命令,将该文件移动到可访问的目录,即可拖到电脑目录下
mv /data/data/com.tencent.mm/MicroMsg/982178cdd5589cb042c4efb99be0333c/appbrand/pkg/_255193015_171.wxapkg /mnt/sdcard/Download
注意:有些情况下是分包,需要删除pkg目录下所有文件,重新访问该小程序,之后将所有的wxapkg都移动出来 davinci:/data/data/com.tencent.mm/MicroMsg/982178cdd5589cb042c4efb99be0333c/appbrand # mv /data/data/com.tencent.mm/MicroMsg/982178cdd5589cb042c4efb99be0333c/appbrand/pkg/* /mnt/sdcard/Download/wxpkg davinci:/mnt/sdcard/Download/wxpkg # ls_-1223314631_171.wxapkg _-1820590985_171.wxapkg _-372062782_171.wxapkg _1123949441_612.wxapkg _255193015_171.wxapkg_-1325581962_171.wxapkg _-1991183043_171.wxapkg _-86252332_171.wxapkg _2041131240_171.wxapkg _453111957_171.wxapkg_-1536422934_171.wxapkg _-289032338_171.wxapkg _-942297262_171.wxapkg _2106768478_171.wxapkg _927440678_171.wxapkg 3.反编译
使用wxappUnpacker
# 安装依赖(具体参考下官方github)npm installnode wuWxapkg.js /xxx/_255193015_171.wxapkg
忽略分包爆错,直接进去格式化一下js,Ctrl+F搜索接口
补充
评论区有问到了如何在mac m1环境下安装adb,参考博客:
mac m1 芯片 安装android studio 和 android 模拟器 以及 安装外部应用包 兼容完全指南MacBook M1 安装Android Studio
安装完之后,参考Android 调试桥 (adb)
配置完成之后,即可使用adb
(base) ? ~ which adb /Users/xxx/Library/Android/sdk/platform-tools/adb 12338540