赞
踩
一、模拟请求进行抓包
二、小程序wxapkg包的获取
三、反编译wxapkg包
四、js逆向破解
流程图:
首先通过抓包操作,获得请求数据的接口,对接口进行分析,如果接口有加密参数则才需要后续的操作。
Charles安装
Charles本地证书安装(本例中Charles版本为4.5.6)
打开Charles-》Help-》Install Charles Root Certificate
安装完毕后进入刚才界面查看
SSL代理设置
手机证书安装(此处以IOS为例,安卓与此相像)
查看本地ipv4地址
手机代理设置
手机与电脑连接在同一局域网内,手机可以连wifi,笔记本可以连wifi或网线
打开手机先把已连接wifi断开并且忽略该网络
重新输入密码连接该wifi并且进入代理设置
代理设置完毕后电脑端Charles会弹出窗口确认是否连接手机,选择Allow
打开手机浏览器输入chls.pro/ssl下载手机端证书
开始抓包(以某商城小程序为例)
Charles使用基本介绍
关闭电脑端抓包
进入XXXX小程序进行商品搜索
进入Charles,Ctrl+F进行关键字搜索
双击进入该请求
至此抓包已完成,可以直接使用postman来测试接口。
与网页端爬虫相同,有时候对接口进行分析后会发现该接口需要携带加密参数才能获取到我们想要的数据。而微信打开小程序时会先将小程序的wxapkg包下载到本地存储起来,然后进行调用,因此我们只需要获取目标小程序对应的wxapkg包,对该包进行反编译便可获得基础项目文件进行后续的js逆向操作。
安卓模拟器下载(此处使用逍遥模拟器)
安装好逍遥模拟器后进入应用市场下载RE文件管理器
在逍遥模拟器上安装微信,并且完成登录
下载完毕后使用RE文件管理器进入目录
/data/data/com.tencent.mm/MicroMsg/{一串16进制字符}/appbrand/pkg
长按某个wxapkg包进行多选,删除所有wxapkg包
返回微信界面,打开对应的小程序,此时返回刚才目录即可看到该小程序的wxapkg包。
使用RE文件管理器将对应wxapkg包移动到手与电脑共享目录中
共享目录查看
此处安卓端的默认路径为:
/storage/emulated/0/“此处Pictures/Movies/Download/Music四个文件夹都为共享文件夹”
重新进入RE文件管理器选取刚刚获得的wxapkg包,点击复制,然后移动到目标目录点击粘贴
移动到共享文件夹
复制完成后打开电脑对应的共享文件夹即可获得wxapkg包。
目前市面上对于小程序wxapkg包的反编译主要是使用js插件wxappUnpacker,随着微信对于小程序的加密、混淆打包、分包及插件机制,小程序反编译的成功率大大降低,目前市面上比较成熟的大型小程序基本无法完成成功反编译wxml、wxss,因此小程序反编译debug运行主要依托下面几个关键要点:
下载地址:
选择正确安装包下载,这里选择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/bin/node /usr/local/bin/node
ln -s /root/node-v14.15.4-linux-x64/bin/node /usr/local/bin/npm
查看是否安装成功
node -v
如果没有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 cssbeautify
npm install vm2
npm install uglify-es
npm 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工具打开该项目,能够直接查看到前端代码
至此小程序反编译操作完成!
在进行加密参数破解的时候,单纯的通过前端文件来扣js代码完成逆向难度较大,因此需要通过debug模式来帮助我们找到对应的加密参数生成代码,反编译项目时主要遵循以下要点:
下载微信开发者工具
https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
打开开发者工具运行刚才传到windows下的项目文件(AppID可以自己注册也可以用测试号)
打开项目
对小程序进行重复编译,不断解决报错问题,删除不必要代码,便可正常运行小程序。
debug过程跟浏览器过程一样,打好断点编译运行。
至此,已经完成了从抓包-》获取程序包-》反编译-》js逆向(前端代码查看,debug调试)的全过程,随着微信对小程序的不断优化,小程序的反编译以及debug运行的难度也越来越困难,由于基本无法完成成功反编译wxml、wxss,因此小程序爬虫主要有以下几个难点:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。