前期准备:
安装node.js不作细述,按提示安装即可。安装完成后在命令窗口输入:node -v,能查看到版本号即可。
打开脚本地址下载反编译脚本,解压。
安装依赖
在脚本目录下shift+鼠标右键,打开命令窗口,逐条命令安装:
npm install esprima
npm install css-tree
npm install cssbeautify
npm install vm2
npm install uglify-es
npm install js-beautify
npm install escodegen
获取小程序.wxapkg文件
模拟器安装好RE管理器获取root权限,进入存放路径,
安卓存放路径:/data/data/com.tencent.mm/MicroMsg/{User}/appbrand/pkg
其中{User}为当前用户的用户名,类似于2bc*************b65一串。
开始反编译
image.png在脚本目录下shift+鼠标右键,打开命令窗口,输入命令:node wuWxapkg.js <files...>
<files...>是指小程序.wxapkg文件存放目录。
比如我的文件存放在D:\_xxxxxx.wxapkg
那就在命令窗口输入:node wuWxapkg.js D:\_xxxxxx.wxapkg
等待完成
image.png
错误提示代码:
ReferenceError: $gwx is not defined
at vm.js:3:3
at Script.runInContext (vm.js:107:20)
at VM.run (D:\wxappUnpacker-master\node_modules\vm2\lib\main.js:208:72)
at runVM (D:\wxappUnpacker-master\wuWxss.js:69:6)
at runOnce (D:\wxappUnpacker-master\wuWxss.js:97:27)
at Array.preRun (D:\wxappUnpacker-master\wuWxss.js:177:5)
at CntEvent.decount (D:\wxappUnpacker-master\wuLib.js:17:43)
at ioLimit.runWithCb.err (D:\wxappUnpacker-master\wuLib.js:73:11)
at agent (D:\wxappUnpacker-master\wuLib.js:54:14)
at FSReqWrap.oncomplete (fs.js:141:20)
解决方法
修改反编译脚本wuWxss.js代码 将下面原代码
function runVM(name,code){
let wxAppCode={},handle={cssFile:name};
let vm=new VM({sandbox:Object.assign(new GwxCfg(),{__wxAppCode__:wxAppCode,setCssToHead:cssRebuild.bind(handle)})});
vm.run(code);
for(let name in wxAppCode)if(name.endsWith(".wxss")){
handle.cssFile=path.resolve(frameName,"..",name);
wxAppCode[name]();
}
}
修改为
function runVM(name,code){
let wxAppCode={},handle={cssFile:name};
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]();
}
}
修改完再次执行反编译命令
网友评论