写在开头
操作步骤
安装 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左右
测试 了一个小程序 完美解析 只是小程序端页面
测试了一个小游戏 解析成功 但运行时白屏 提示编译出错
写在最后
对于不想写小程序页面的小伙伴们可以照此方法操作 技术让我慢慢变懒.....