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

因为过节在家编写自己的一个工具小程序,结果上班后发现没有拷贝到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

题外话

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

求赞

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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值