文章目录1 .基本采集流程2 .采集流程2.1包2.1.1包背景介绍2.1.2工具2.1.3具体包获取流程2.2 wxapkg包获取背景介绍2.2.2工具2.2.3具体包获取流程2 鲁过程2.4微信开发者工具调试2.4.1开发者工具调试背景2.4.2工具2.4.3具体调试过程3 .总结
1 .基本采集流程1、按仿真要求获取抓捕包2、小程序wxapkg包3、反编译wxapkg包4、js反码
流程图:
2 .采集流程2.1包2.1.1包背景介绍首先通过包操作,获取请求数据的接口,分析接口,接口有加密参数需要后续操作。
2.1.2工具Charles包工具手机1台2.1.3具体包流程Charles安装
3359 www.Charles proxy.com/latest-release/download.do #
安装Charles本地证书(在本例中,Charles版本为4.5.6 )
打开Charles -’help -’installcharlesrootcertificate
安装完成后,进入刚才的界面
SSL代理设置
安装手机证书(这里以IOS为例)。 安卓与此类似) ) )。
显示本地ipv4地址
输入键盘win r-" cmd-"控制台ipconfig-"获取用于设置手机端代理ip和端口的IPV4地址的手机代理设置
手机与电脑连接在同一局域网内,手机可以连接wifi,笔记本电脑可以连接wifi或网线
打开手机,断开连接的wifi,并忽略网络
重新输入密码以连接到wifi并进入代理设置
代理设置完成后,电脑端的Charles会显示弹出窗口,确认是否连接手机,然后选择Allow
打开手机浏览器输入chls.pro/ssl下载手机端证书
安卓手机打开手机存储空间,找到下载的文件,然后单击安装。 如果不成功,请尝试将pem更改为crt格式,然后再次单击安装。 如果不行的话,请换几个浏览器试着下载一下。 如果还不行,就升级查尔斯吧。 IOS证书下载完成后,将立即显示安装选项。 安装完成后,打开手机设置- "通用- "关于本机- "底部证书信任设置- "选择信任开始抓取包(以某商城小程序为例)
使用Charles的基本介绍
关闭电脑侧的包
进入XXXX小程序进行商品搜索
进入Charles,Ctrl F进行关键字检索
双击进入请求
现在,您可以直接使用postman测试接口了。
2.2 wxapkg软件包获取2.2.1 wxapkg软件包获取背景介绍与网站爬虫相同,有时对界面进行了分析,结果表明该界面必须具有加密参数才能获取我们想要的数据另一方面,微信将applet的wxapkg包下载到本地存储后调用,只需获取与目标applet对应的wxapkg包,并对其进行逆编译,即可获取基础项目文件后
2.2.2使用工具Android模拟器2.2.3具体获取软件包进程Android模拟器的下载(此处使用逍遥模拟器) )。
https://www.yeshen.com/pg/jpc? utm_campaign=xypc
安装自由模拟器后,进入APP应用程序市场下载RE文件管理器
在逍遥模拟器上安装微信,完成登录
下载完成后,使用RE文件管理器进入目录
/data/data/com.Tencent.mm/micro msg/{十六进制字符串}/appbrand/pkg
长按某个wxapkg包以选择多个,然后删除所有wxapkg包
返回微信界面,打开相应的小程序。 此时,返回刚才的目录,您将看到该applet的wxapkg软件包。
使用RE文件管理器,获得相应的wxapkg包并导航到要与计算机共享的目录
共享目录视图
Android端的默认路径如下:
/storage/emulated/0/“其中Pictures/Movies/Download/Music这四个文件夹都是共享文件夹”
重新进入RE文件管理器,选择刚才获取的wxapkg包,单击复制,然后导航到所需目录并单击以粘贴
移动到共享文件夹
复制完成后,打开电脑上对应的共享文件夹即可获得wxapkg软件包。
2.3 wxapkg软件包反向编译2.3.1反向编译背景目前市面上的小程序wxapkg软件包反向编译主要使用js插件wxappUnpacker。 随着微信对applet的加密、混淆、分包和插件机制,applet的反编译成功率大幅下降,目前市面上较为成熟的大型小程序
程序基本无法完成成功反编译wxml、wxss,因此小程序反编译debug运行主要依托下面几个关键要点: 降低调试基础库的版本抛开程序的语法问题,删除非必要性代码下划线文件名替换调试时勾选兼容选项,如:ES6转ES5、不检验合法域名等 2.3.2 使用工具 node环境wxappUnpacker项目脚本Linux服务器一台(由于windows下命名规范问题,因此在windows环境下反编译会出现文件夹丢失情况) 2.3.3 具体反编译流程 node环境安装下载地址:
https://nodejs.org/en/download/
选择正确安装包下载,这里选择Linux(x64)版本
这里可以直接通过windows端下载完毕后传到linux上解压,也可以直接获取下载地址在linux上使用wget指令下载
下载完毕后解压
xz -d node-v14.15.4-linux-x64.tar.xz // 如果没有xz命令 ”yum install xz -y“tar xf node-v14.15.4-linux-x64.tar配置环境变量
ln -s /root/node-v14.15.4-linux-x64/清爽的柠檬/node /usr/local/清爽的柠檬/nodeln -s /root/node-v14.15.4-linux-x64/清爽的柠檬/node /usr/local/清爽的柠檬/npm查看是否安装成功
node -v 获得wxappUnpacker脚本如果没有git指令,安装git
yum -y install git下载到本地后进入脚本文件夹内
github项目地址:
https://github.com/xuedingmiaojun/wxappUnpacker
克隆到本地:git clone https://github.com/xuedingmiaojun/wxappUnpacker.git下载对应依赖
安装npm install安装依赖npm install esprima npm install css-tree npm install cssbeautifynpm install vm2npm install uglify-esnpm install js-beautify在该目录下新建反编译文件夹并拷贝wxapkg包到该文件夹下
新建文件夹(本案例文件夹名称为XSYX)mkdir XSYX返回上级文件夹,执行对应反编译命令
注意:wxapkg包会有多个,如果出现错误提示,检测到该包为分包,则先反编译其他包,直到找到主包并且反编译成功后再反编译分包!
例:
反编译指令(主包及分包)
主包:
node ./wuWxapkg.js ./XSYX/_1134933561_247.wxapkg(此处为wxapkg包相对路径)分包:
node ./wuWxapkg.js ./XSYX/_-894268284_247.wxapkg(此处为wxapkg分包相对路径) -s=./XSYX/_1134933561_247(此处指定主包反编译后的文件夹名称)主包:
分包:
反编译完成后拷贝主包文件夹到windows本地
注意:拷贝前注意主包文件夹中是否存在文件命名格式不符合windows要求,如此例中需要修改plugin-private:改为plugin-private
拷贝完成后可在本地直接使用ide工具打开该项目,能够直接查看到前端代码
至此小程序反编译操作完成!
2.4 微信开发者工具调试 2.4.1 开发者工具调试背景 在进行加密参数破解的时候,单纯的通过前端文件来扣js代码完成逆向难度较大,因此需要通过debug模式来帮助我们找到对应的加密参数生成代码,反编译项目时主要遵循以下要点:
适当降低基础库版本删除报错的不必要代码勾选适配选项 2.4.2 使用工具 微信开发者工具 2.4.3 具体调试流程下载微信开发者工具
https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
打开开发者工具运行刚才传到windows下的项目文件(AppID可以自己注册也可以用测试号)
打开项目
对小程序进行重复编译,不断解决报错问题,删除不必要代码,便可正常运行小程序。
debug过程跟浏览器过程一样,打好断点编译运行。
3. 总结 至此,已经完成了从抓包-》获取程序包-》反编译-》js逆向(前端代码查看,debug调试)的全过程,随着微信对小程序的不断优化,小程序的反编译以及debug运行的难度也越来越困难,由于基本无法完成成功反编译wxml、wxss,因此小程序爬虫主要有以下几个难点:
小程序端代码更新迭代快,基本上每几周就进行一次迭代小程序包反编译难度大,不能保证文件完全反编译成功、不发生丢失代码进行本地debug调试时需要解决编译中遇到的各种问题,需要掌握基础的小程序编码知识js逆向爬虫开发开发成本大,开发周期长