jsc反编译以及二进制修改

参考:https://www.52pojie.cn/thread-814217-1-1.html

 

       最近碰到jsc的游戏,游戏中有跳过功能但有限制,想着对游戏进行修改达到无条件跳过。

       首先,反编译jsc文件,使用这个工具https://github.com/irelance/jsc-decompile-mozjs-34(大致就是安装一个php环境,然后用composer导入项目所需)注意这里只能反编译SpiderMonkey 34 这个版本,反编译后的文件能看大部分的代码。

       在文件中搜索skip,观察可知如下的代码就是跳过按钮的判断

        接下来,根据字节码对照表寻找这段代码在jsc中对应的位置,字节码 对照表 https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Internals/Bytecode

        在反编译的js搜索canSkip,上面代码的canSkip是最后一个

        这块字符串对应的代码在它前面,如图中所标3B 00 00 00 00是取下标为0的字符串cc,而我们要找的canSkip小标是0x11,可以从头往下跟着代码找,熟悉的话就知道35 00 00 00 11这个就是获取canSkip字符串,后面跟着的20是取反,再后面07就是IFEQ的判断语句,后面的52是else执行的地方,而我们的跳过功能执行的地方刚好是else之后,我们就可以将07改成06(GOTO),直接goto执行跳过代码了。改完之后替换原来的jsc文件,这样就可以无条件跳过了。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值