注意:本方法亲测适用于安卓手机,ios机型未知适用性。当然也可以用PC夜神模拟器抓取小程序包。
通过反编译获取微信小程序源码,网上一堆教程,这里简单说下操作步骤。
准备环境
可在PC和手机任一环境中获取小程序源码。
-
PC端:
请安装夜神模拟器,完成后开启root权限。如下:
之后于夜神上下载RE管理器、微信即可。
-
安卓手机:
请越狱获取root权限。鉴于目前大多数root软件都已不支持安卓高版本系统,推荐搞ji者使用Magisk Manager一劳永逸,获取后的root权限也稳定可靠(有变砖风险,小白慎重,富人随意)。获取root权限后,一样下载RE管理器、微信即可。
开始获取
-
获取小程序源文件包“xxxxx.wxapkg”
-
访问过的线上的微信小程序包目录为:
/data/data/com.tencent.mm/MicroMsg/{此处为一串16进制字符}/appbrand/pkg/。 -
授予RE管理器Root权限,用RE管理器打开此目录,会发现可能不止一个的
xxxxxxx.wxapkg类型的文件,这都是微信小程序的源文件包。 -
长按该包,然后点右上角选项将其
压缩为zip包,然后再将压缩好的包发送到你的电脑上,解压缩得到xxxxxxx.wxapkg。
-
-
node执行反编译脚本
-
点下载反编译脚本,在node中执行
npm install安装依赖,或单独安装依赖(建议):npm install esprima npm install css-tree npm install cssbeautify npm install vm2 npm install uglify-es npm install js-beautify -
重点:下载的反编译脚本代码存在问题,需修改!
将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 = {}; let handle = {cssFile: name}; let gg = new GwxCfg(); let tsandbox = { $gwx: GwxCfg.prototype["$gwx"], __mainPageFrameReady__: GwxCfg.prototype["$gwx"], //解决 $gwx is not defined __vd_version_info__: GwxCfg.prototype["$gwx"], //解决__vd_version_info__ is not defined __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](); } } } -
执行
node wuWxapkg.js [-d] <files...>即可。files就是你想要反编译的wxapkg文件名。成功后如图:
-