一. 准备工具:
1 node.js 运行环境
如果没有安装nodejs,请先安装。下载地址:https://nodejs.org/en/
测试成功否输入node -v查看node的版本号,
以前安装过node.js然后找node.js安装目录:cmd-->where node
2.反编译的脚本
亲改的2020.05版
百度网盘:链接:https://pan.baidu.com/s/13-AYgHutvkOn36A-iGsQEQ 提取码:ie8w
3 夜神模拟器(用于获取wxapkg包,PC版微信的wxapkg包不能用于反编译)
地址:https://www.yeshen.com/cn/download/fullPackage
二. 接下来正式开始反编译
1 获取小程序wxapkg包:
详细方法请看链接:小程序笔记(二)程序包wxapkg获取方法
2.找到nodejs安装目录下的node_modules并把node_modules复制一份到之前下载的反编译脚本文件夹中(脚本中有node_modules,可删除后再复制,也可直接替换)
3.把反编译脚本文件丢到nodejs安装目录下(也可不丢)
4.把小程序wxapkg包丢到反编译脚本文件夹里面(方便输编译指令)
5.打开node.js 或者cmd, 路径切换到我们下载的反编译脚本的目录,如图所示
或者
路径切换到我们下载的反编译脚本的目录(切换盘符-->cd打开指定目录):
6.切换到反编译脚本的目录后 ,在cmd窗口中依次安装以下依赖:
npm install esprima
npm install css-tree
npm install cssbeautify
npm install vm2
npm install uglify-es
npm install js-beautify
npm install escodegen -g
7.然后执行反编译命令: node wuWxapkg.js xxxxxxx.wxapkg,如图:
8.小程序源码已经解压到了wxapkg的存放目录。
*注:
部分小程序反编译,会丢失wxss文件,也就是关键的样式文件。
同时会有报错提示 _vd_version_info__ is not defined 该问题是微信升级导致。
解决方案: 修改反编译目录下的wuWxss.js文件,修改RunVm方法为(本文章2020.05已经对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]();
}
}
}