本文记录了我通过反编译获得微信小程序源码的过程.点击链接前往我的个人博客查看
1.下载node.js,直接去官网下载,安装教程点击链接查看
2.反编译的脚本
这里直接提供,点击链接下载,下载后解压即可
3.手机模拟器,这里我用的夜神模拟器,给出官网链接,安装一路默认即可
4.RE文件管理器(非必须),我觉得这个更好操作
在下面目录下,
/data/data/com.tencent.mm/MicroMsg/{{一串32位的16进制字符串文件夹}}/appbrand/pkg/
会发现一些 xxxxxxx.wxapkg
类型的文件,这些就是微信小程序的包
根据时间确定源文件包
可以通过夜神模拟器的文件共享,也可以安装QQ,将源文件压缩后传至电脑
点击确定即可,在cd 到这个存放目录,输入以下命令安装依赖
npm install esprima
npm install css-tree
npm install cssbeautify
npm install vm2
npm install uglify-es
node .\wuWxapkg.js D:\_-472979937_90.wxapkg
D:\_-472979937_90.wxapkg 改为你存放源文件的绝对目录
运行即可,下图为成功运行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pqsLpjPa-1606790490252)(https://i.loli.net/2020/11/15/aporGMPjm974leN.gif)]
如果出现 Cannot find module 'xxx' 表示模块未安装
运行命令 npm install 'xxx' , 安装依赖
如果遇到 __vd_version_info__ is not defined这种报错
解决方法如下:
修改反编译脚本wuWxss.js代码,将原代码
function runVM(name,code){
let wxAppCode={},handle={cssFile:name};
let vm=new VM({sandbox:Object.assign(new GwxCfg(),{__wxAppCode__:wxAppCode,setCssToHead:cssRebuild.bind(handle)})});
vm.run(code);
for(let name in wxAppCode)if(name.endsWith(".wxss")){
handle.cssFile=path.resolve(frameName,"..",name);
wxAppCode[name]();
}
}
改为
function runVM(name,code){
let wxAppCode={},handle={cssFile:name};
let gg = new GwxCfg();
let tsandbox ={$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]();
}
}
打开微信开发者工具导入小程序即可
备注:
其他平台小程序可自行尝试