1、root手机或者模拟器root
2、RE文件管理器,获取root,安全中心->root权限管理
3、获取wxapkg文件,路径:data/data/com.tencent.mm/MicroMsg/1bd6b8205e3a41715b8e2cca72bc50f0/appbrand/pkg/
4.在github上面下载小程序反编译工具https://github.com/qwerty472123/wxappUnpacker,然后解压
5.电脑安装node.以及cnpm(避免出现问题,最好安装cnpm,不用npm):
node下载地址: https://nodejs.org/zh-cn/
6、打开终端cd 到你clone或者下载好的反编译脚本wxappUnpacker目录下,依次输入如下命令安装反编译脚本的运行依赖
1.npm install esprima
2.npm install css-tree
3.npm install cssbeautify
4.npm install vm2
5.npm install uglify-es
6.npm install js-beautify
安装好依赖之后,就开始反编译 .wxapkg 文件
在当前目录下输入 node wuWxapkg.js
备注:
小米8开发版本。http://bigota.d.miui.com/9.3.1/miui_MI8_9.3.1_b65fc3a636_9.0.zip
按10开启拓展功能,手动选择安装包。
微信小程序的包和依赖包的后缀都是.wxapkg,真正的小程序包大小1M左右,而依赖包大小2、3M甚至更多。反编译.wxapkg依赖包会报错: Error: This Package is unrecognizable, please decrypted every type of file by hand.反编译错误的包返回结果
参考:
https://www.jianshu.com/p/53e97423383e
https://zhuanlan.zhihu.com/p/56056561
小程序分包反编译:https://www.sohu.com/a/240107441_396671
node wuJs.js icourtdayone/_819993747_65/packageB/app-service.js
node wuWxml.js icourtdayone/_819993747_65/packageB/page-frame.js
$gwx is not defined 报错的问题
由于微信小程序内部升级的原因,最近github上的
小程序反编译工具已部分失效, 运行node wuWxapkg.js
命令的时候会报 $gwx is not defined
错误。
导致 page-frame.html
文件无法反编译,无法重新生成wxss
格式文件。
经过笔者对小程序混淆源码的分析,重新更改了部分wxappUnpacker
的逻辑源码,再次成功反编译小程序。
- 准备工作
在此就不再啰嗦啦,具体参见wxappUnpacker的ReadMe。
- 下载微信小程序包
具体Baidu
或者Google
一下,网上太多资料。
- 修改
wxappUnpacker
中wuWxss.js
部分代码,具体如下图:
![](http://img.rhett-ni.com/www/uploads/article/2019/03/07/2780138645.jpg)
`function runVM(name,code){`
`let wxAppCode={},handle={cssFile:name};`
`//let vm=new VM({sandbox:Object.assign(new GwxCfg(),{__wxAppCode__:wxAppCode,setCssToHead:cssRebuild.bind(handle)})});`
`let gg = new GwxCfg()`
`let tsandbox = {$gwx:GwxCfg.prototype["$gwx"],__mainPageFrameReady__:GwxCfg.prototype["$gwx"],__wxAppCode__:wxAppCode,setCssToHead:cssRebuild.bind(handle)}`
`let vm = new VM({sandbox:tsandbox});`
`vm.run(code);`
`for(let name in wxAppCode)if(name.endsWith(".wxss")){`
`handle.cssFile=path.resolve(frameName,"..",name);`
`wxAppCode[name]();`
`}`
`}`