逆向微信小程序
负责甲方小程序的运维,然后发现他们木有源码,没见过这么操蛋的情况……于是我就尝试对小程序进行逆向,这里分享一下我的过程。
一、从手机中提取出wxapkg文件
iOS端需要越狱,安卓端需要root。
以安卓为例,进入以下目录:
/data/data/com.tencent.mm/MicroMsg/(一长串字符串)/Appbrand/pkg
可以找到wxapkg文件,把它提取到电脑上。
二、准备解包工具
首先下载工具:
https://github.com/qwerty472123/wxappUnpacker/tree/master
安装node,并且安装这些依赖:
cssbeautify、CSSTree、VM2、Esprima、UglifyES、js-beautify
安装命令为npm install [依赖包]
修改wxWxss.js文件中的runVM方法:
function runVM(name,code) { let wxAppCode={},handle={cssFile:name}; let gg = new GwxCfg(); let tsandbox ={ $gwx:GwxCfg.prototype["$gwx"], __mainPageFrameReady__:GwxCfg.prototype["$gwx"], __vd_version_info__: 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](); } }
不进行这一步的话,提取不出wxss文件。
三、运行解包工具
cd到解包工具目录,运行命令:
node wuWxapkg.js [wxapkg文件名]
运行完毕后可以看到解包后的源码目录。