美文网首页
解决微信小程序反编译时 $gwx is not defined

解决微信小程序反编译时 $gwx is not defined

作者: Spooking | 来源:发表于2019-04-08 09:54 被阅读0次

因为过节在家编写自己的一个工具小程序,结果上班后发现没有拷贝到U盘上,但是我的微信里预览过开发版,就想反编译获取自己的代码……

环境 & 工具

win10 + node.js + wxappUnpacker

wxappUnpacker 地址

前期

如何拿到小程序的包,你需要一台已经root了的安卓手机,包的目录在
/data/data/com.tencent.mm/MicroMsg/appbrand/{user}/pkg/
因为名字是数字不好找,通过时间降序排列能更快的找到,测试包没有后缀.wxapkg(反正我的没有),通过rootexplorer 拷贝到/download目录,然后转发到电脑上

执行

node wuWxapkg.js debug_888888888_1_123456789.wxapkg

报错

node_modules\_vm2@3.6.10@vm2\lib\main.js:214
                        throw this._internal.Decontextify.value(e);
                        ^
ReferenceError: $gwx is not defined
    at vm.js:3:3
    at Script.runInContext (vm.js:102:20)

解析

懒得深究为什么报错,反正意思就是$gwx没有定义(其实在page-frame.html里面是定义过的,谁知道vm虚机是咋整的)


解决

经过代码分析,与$gwx相关的调用和解析wxss没有任何关系。

那么就删掉吧,嘿嘿

找到每一个调用$gwx的地方,整行删掉。

//类似这样的
__wxAppCode__['pages/card/info.wxml'] = $gwx( './pages/card/info.wxml' );

然后单独运行 wxss 解析工具

node wuWxss.js debug_888888888_1_123456789

注意,后面跟的是目录,不带.wxapkg 后缀

再次报错
node_modules\_vm2@3.6.10@vm2\lib\main.js:214
                        throw this._internal.Decontextify.value(e);
                        ^
ReferenceError: __mainPageFrameReady__ is not defined
    at vm.js:6:5
    at Script.runInContext (vm.js:102:20)

老办法,继续删

找到调用 mainPageFrameReady的地方,删掉mainPageFrameReady()

ok ,这个世界清净了。

node wuWxss.js debug_888888888_1_123456789
Guess wxss(first turn)...
Import count info: {}
Guess wxss(first turn) done.
Generate wxss(second turn)...
Generate wxss(second turn) done.
Save wxss...
Total use: 52.356ms

题外话

反编译的源码和我自己写的还是有很大差异的,没有注释,已经混淆,格式也乱了

求赞

方法虽然简单,但是有几个人愿意无私分享……


请尊崇他人劳动成果,反编译仅限学习提高……

相关文章

网友评论

      本文标题:解决微信小程序反编译时 $gwx is not defined

      本文链接:https://www.haomeiwen.com/subject/ssiyiqtx.html