写在开头
操作步骤
- 安装 node.js 环境
- 下载逆向工具包并更新包
- 获取小程序 .wxapk 文件
- 还原小程序源代码
- 遇到的问题
安装 node.js 环境
去nodejs中文官方网站下载最新版本 https://nodejs.org/zh-cn/
... 此处安装省略100行
下载逆向工具包并更新包
下载地址 https://github.com/aen516954023/wxappUnpacker
我是在github上找到的 怕之前的作者删除 直接flok到我的github上仅供研究 (github上也有教程)
下载完以后 cmd 进入目录运行 npm install
获取小程序 .wxapk 文件
安装夜神模拟器 安装微信 在微信中打开需要的小程序完全加载完以后 去模拟器的目录下找到 .wxapk文件
安卓具体目录位置:
/data/data/com.tencent.mm/MicroMsg/{{user哈希值}}/appbrand/pkg/
在这个目录下,会发现一些 xxxxxxx.wxapkg 类型的文件,这些就是微信小程序的包
想办法复制的电脑中 (不会的直接搜索夜神模拟器文件复制到电脑中)
还原小程序源代码
进入逆向工具包目录 在cmd下 运行以下命令 之后会在相同的目录下生成解析出来的目录 然后导入小程序开发者工具即可
node wuWxapkg.js <wxapkg目录>
常见问题
1\. Module build failed: Error: Cannot find module 'escodegen'(本项目已经修复该问题)
####### 解决方法:
npm i escodegen -S
2\. Error: This Package is unrecognizable, please decrypted every type of file by hand.
解决办法:虽然微信小程序的包后缀是.wxapkg,但有一些包的依赖后缀也是.wxapkg,真正的小程序包大小1M左右,而依赖包大小2、3M甚至更多。所以一股脑的反编译.wxapkg 类型的文件可能会报错,遇见这个问题的小伙伴请自知,你可能没找对包哦
3\. _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]();
}
}
}
以上问题我只遇到第2个问题 是我的wxapk文件问题 文件大小应该在3M左右
测试 了一个小程序 完美解析 只是小程序端页面
测试了一个小游戏 解析成功 但运行时白屏 提示编译出错
写在最后
对于不想写小程序页面的小伙伴们可以照此方法操作 技术让我慢慢变懒.....