微信小程序的生态日益庞大,但开发者常面临源码保护与调试的双重挑战。反编译技术允许我们还原小程序包(.wxapkg)为可读代码,而抓包工具则能捕获网络请求。本文结合实战,详解从反编译到抓包的全流程,解决PC端小程序HTTPS抓包失败的核心问题。
需安装:Node.js、Python3、Fiddler Everywhere、微信PC版(3.9+)。确保系统已关闭防火墙或允许代理通过。
PC端小程序包位于微信安装目录的WeChat Files/Applet/下,每个小程序对应一个由AppID命名的文件夹。例如:
C:\Users\你的用户名\Documents\WeChat Files\Applet\wx1234567890abcdef\文件夹内包含__APP__.wxapkg及其他分包。注意:微信3.9+版本后,文件后缀可能隐藏,需通过文件属性查看实际路径。
安装依赖:
git clone https://github.com/qwerty472123/wxappUnpacker.git
cd wxappUnpacker
npm install反编译命令:
node wuWxapkg.js C:\path\to\__APP__.wxapkg -o output_dir常见错误:若提示Error: Cannot find module 'xxx',需手动安装缺失模块,如npm install esprima。若报错Cannot read property 'split' of null,通常因文件路径含空格,改用引号包裹。
反编译得到的JS文件常被混淆,需格式化。使用工具如js-beautify:
npm install -g js-beautify
js-beautify output_dir/app-service.js > app-service-formatted.js对于WXSS样式文件,可直接查看,但部分属性被压缩。可手动补全或使用在线工具还原。
PC端微信从3.9.0版本开始,默认使用系统代理,但小程序请求强制走内置代理,导致Fiddler无法拦截。此外,微信对证书固定(Certificate Pinning)进行了增强,需特殊处理。
步骤1:关闭微信,在Fiddler中设置HTTPS解密,并导出根证书。打开Fiddler Everywhere,进入Settings > HTTPS > Decrypt HTTPS traffic,勾选所有选项,点击Export Root Certificate保存为.cer文件。
步骤2:将证书安装到Windows受信任根证书颁发机构。双击.cer文件,选择安装证书,存储位置选本地计算机,下一步选择将所有证书放入下列存储,浏览选择受信任的根证书颁发机构。
步骤3:修改微信启动参数,强制使用系统代理。创建微信快捷方式,右键属性,在目标框中添加参数:
"C:\Program Files (x86)\Tencent\WeChat\WeChat.exe" --proxy-server=127.0.0.1:8888注意:端口号需与Fiddler代理端口一致(默认8888)。若微信已运行,需完全退出后重启。
步骤4:绕过证书固定。微信某些请求使用SSL Pinning,需在Fiddler中安装第三方插件如FiddlerCertMaker或手动替换证书。推荐使用Fiddler Everywhere内置的AutoResponder功能,将微信的证书验证请求重定向到本地。
具体操作:在Fiddler中捕获到ocsp.digicert.com或crl.verisign.com的请求后,右键选择Add Rule,设置响应为*reset*或返回200空内容,从而绕过OCSP检查。
启动微信,打开任意小程序(如“腾讯待办”)。在Fiddler中过滤mp.weixin.qq.com或api.weixin.qq.com,即可看到HTTPS请求。若仍抓不到,检查微信是否使用QUIC协议(端口443的UDP),Fiddler默认不支持,需在设置中启用Capture UDP traffic(仅Fiddler Everywhere支持)。
假设反编译一个小程序后,在app-service.js中搜索https://,发现如下请求:
wx.request({
url: 'https://api.example.com/v2/user/info',
data: {openid: 'xxxx'},
success: res => { console.log(res) }
})通过Fiddler抓包,可对比实际请求参数与源码是否一致,用于安全审计。例如,若发现openid明文传输,可建议开发者使用加密或签名。
ERR_CERT_AUTHORITY_INVALID,需确认证书已安装至受信任根目录,且Fiddler的HTTPS解密已开启。本文完整演示了微信小程序的反编译与抓包技术,从源码提取到网络请求拦截,为开发者提供了逆向分析的能力。请注意,这些技术仅用于合法目的,如学习、安全测试或自家产品调试,不得用于侵犯他人权益。
专注技术分享与实战