前言
微信小程序的格式是:.wxapkg ,.wxapkg 是一个二进制文件。详细内容可参考 微信小程序源码阅读笔记
安卓手机目录为 /data/data/com.tencent.mm/MicroMsg/{User}/appbrand/pkg
电脑目录为 /WeChat Files/Applet
准备
- node.js 运行环境
- 反编译的脚本,下载地址
- 需要反编译小程序的文件
xxx.wxapkg
详细步骤
安装反编译脚本的依赖,执行
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在当前目录下输入
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