微信小程序反编译

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    files 就是你想要反编译的包的路径 例如:我有一个需要反编译的文件 776200096_15.wxapkg 已经解压到了桌面目录下(mac电脑),那么就输入命令 node wuWxapkg.js  /Users/apple/Desktop/_-776200096_15.wxapkg

备注:

小米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一下,网上太多资料。

  • 修改wxappUnpackerwuWxss.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]();`

`}`

`}`

你可能感兴趣的:(微信小程序,反编译)