微信小程序反编译报错

By AYE 0

前言

​ 微信小程序的格式是:.wxapkg.wxapkg 是一个二进制文件。详细内容可参考 微信小程序源码阅读笔记

​ 安卓手机目录为 /data/data/com.tencent.mm/MicroMsg/{User}/appbrand/pkg

​ 电脑目录为 /WeChat Files/Applet

准备

  • node.js 运行环境
  • 反编译的脚本,下载地址
  • 需要反编译小程序的文件 xxx.wxapkg

详细步骤

  1. 安装反编译脚本的依赖,执行 npm install ,或全局安装所有依赖

    npm install esprima -g
    npm install css-tree -g
    npm install cssbeautify -g
    npm install vm2 -g
    npm install uglify-es -g
    npm install js-beautify -g
    npm install escodegen -g
  2. 在当前目录下输入 node wuWxapkg.js [-d] //files 就是你想要反编译的文件名。例: node .wuWxapkg.js C:\_APP_.wxapkg

反编译报错解决方法

  • ReferenceError: __mainPageFrameReady__ is not defined

    解决方案: 打开page-frame.html到最底部去掉 __mainPageFrameReady__()

  • Error: This Package is unrecognizable, please decrypted every type of file by hand.

    解决方案: 重新换一个.wxapkg文件

  • 部分小程序反编译,会丢失wxss文件,也就是关键的样式文件。

    同时会有报错提示 _vd_version_info__ is not defined 该问题是微信升级导致。

    解决方案: 修改反编译目录下的 wuWxss.js 文件,修改 RunVm 方法为

    function runVM(name,code){
        let wxAppCode={},handle={cssFile:name};
        let tsandbox = {
            __vd_version_info__:"",
            $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]();
            }
        }
    }

https://blog.csdn.net/dhnate678/article/details/97789001

https://blog.csdn.net/rolan1993/article/details/79695913

https://blog.csdn.net/qq_33858250/article/details/80543815