扒小程序代码,抓取源码
主要思路:
小程序运行时,会先下载资源再运行,拿到小程序的资源包后,通过反编译程序,对微信压缩后的包进行反编译,即可还原大部分代码。
截至记录当天,此方法未被微信修复。
1. 抓取源码包 wxapkg
点开小程序图标的过程,微信就已经从远端服务器下载其源文件到手机上了,原则上,手机本地已经有这个源文件了,只要有root权限或者越狱,能访问到。没有root权限的话,可以使用安卓模拟器。推荐使用 夜神,自带root,附上地址:下载地址
开启模拟器后,安装微信、RE管理器( 用于访问源文件 )。然后从设置里开启: 超级用户 => 右上角菜单设置 => 自动响应 => 允许
随后进入微信,点开小程序,运行一会儿后,用 RE管理器,找到一下位置文件
根目录/data/data/com.tencent.mm/MicroMsg/{ User
}/appbrand/pkg/
{ User } 为一串16进制字符
将这些文件压缩后,通过发送给微信好友 等方式分享出来,不走压缩步骤的话,会提示获取资源失败。
微信在压缩打包的时候会按照一定规则来,分包基本是单独的一个 wxapkg 文件,包括一些 依赖。wxapkg 是微信自己的二进制文件,戳这里看大神解析
2. 反编译
拿到 wxapkg 文件后,接下来就可以进行反编译了。
node 环境下,clone 这个 git 资源 https://github.com/qwerty472123/wxappUnpacker ,
此资源已被移除,参考其他资源 https://github.com/xuedingmiaojun/wxappUnpacker ,
安装依赖 npm install
随后安装其他依赖
npm install esprima
npm install css-tree
npm install cssbeautify
npm install vm2
npm install uglify-es
npm install js-beautify
npm install escodegen
安装完成后,执行命令, node wuWxapkg.js < file path…>
< file path…> 为 wxapkg 的资源位置,如:
node wuWxapkg.js d:\wxapp\resource\_1123949441_304.wxapkg
执行后即可反编译出程序源码,编译后的文件地址同 wxapkg 资源地址目录
参考:两步快速获取小程序源码