微信小程序反编译获取源码
文章目录
前言
对微信小程序进行源码反编译,一般目的为:
获取js签名算法,过数据包的防篡改策略
获取接口的判断逻辑,一般用于修改返回包来达到未授权的效果,在尝试无法找到争取的返回值的时候,需要从源码来进行构造
本文旨在记录如何对一个微信小程序进行编译获取其源码,后续分析不做分享,因目的不同,分析的方式也会不同
一、前置条件
需要一台root了的安卓测试手机,root的方式请自行查找。如果是红米手机,可以参考我的root方式,博客链接
本文演示的步骤,基于macbook m1进行,其他设备操作基本也差不多
二、操作步骤
1.进入adb shell
命令如下(示例):
(base) ➜ ~ adb shell
davinci:/ $ whoami
shell
# 提权
davinci:/ $ su root
davinci:/ # whoami
root
2.提取源码编译文件
代码如下(示例):
davinci:/ # cd /data/data/com.tencent.mm
davinci:/data/data/com.tencent.mm # ls
982178cdd5589cb042c4efb99be0333c WebNetFile ipcallCountryCodeConfig.cfg recovery version_history.cfg
CheckResUpdate appbrand last_avatar_dir regioncode webcompt
ClickFlow autoauth.cfg luckymoney snsreport.cfg webservice
CompatibleInfo.cfg channel_history.cfg media_export.proto staytime.cfg webview_tmpl
CronetCache configlist mmslot systemInfo.cfg
NowRev.ini deviceconfig.cfg mobileinfo.ini textstatus
ProcessDetector ee1da3ae2100e09165c2e52382cfe79f newmsgringtone tmp
WebCanvasPkg 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 # ls
pagesidx pkg web_renderingcache
davinci:/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.反编译
# 安装依赖(具体参考下官方github)
npm install
node wuWxapkg.js /Users/spark/tools/安卓武器库/_255193015_171.wxapkg
忽略分包爆错,直接进去格式化一下js,Ctrl+F搜索接口
作者:Sp4rkW
来源:https://blog.csdn.net/wy_97/article/details/122155518