美文网首页
最新微信小程序解包反编译bug处理 解决 $gwx is not

最新微信小程序解包反编译bug处理 解决 $gwx is not

作者: next_discover | 来源:发表于2019-04-10 17:38 被阅读0次

    前期准备:

    安装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]();
       }
    }
    
    修改完再次执行反编译命令

    相关文章

      网友评论

          本文标题:最新微信小程序解包反编译bug处理 解决 $gwx is not

          本文链接:https://www.haomeiwen.com/subject/ddkniqtx.html