主要思路:
小程序运行时,会先下载资源再运行,拿到小程序的资源包后,通过反编译程序,对微信压缩后的包进行反编译,即可还原大部分代码。
截至记录当天,此方法未被微信修复。
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 ,在其目录内安装依赖 npm install
或
npm install esprima npm install css-tree npm install cssbeautify npm install vm2 npm install uglify-es npm install js-beautify
安装完成后,执行命令行, node wuWxapkg.js [-d] <files…>
[-d] <files…> 为 wxapkg 的资源位置,如:
node wuWxapkg.js d:wxapp esource\_1123949441_304.wxapkg
执行后即可反编译出程序源码,编译后的文件地址同 wxapkg 资源地址目录
参考:两步快速获取小程序源码
或 使用TBS爬取已经上线的微信小程序页面 (未测)