jsc反编译以及二进制修改
本帖最后由 tongtong123 于 2019-8-7 09:29 编辑参考:https://www.52pojie.cn/thread-814217-1-1.html
最近碰到jsc的游戏,游戏中有跳过功能但有限制,想着对游戏进行修改达到无条件跳过。
首先,反编译jsc文件,使用这个工具https://github.com/irelance/jsc-decompile-mozjs-34(大致就是安装一个php环境,然后用composer导入项目所需)注意这里只能反编译SpiderMonkey 34 这个版本,反编译后的文件能看大部分的代码。
在文件中搜索skip,观察可知如下的代码就是跳过按钮的判断
https://img-blog.csdnimg.cn/20190806204414688.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQ3NTM3NDg=,size_16,color_FFFFFF,t_70
接下来,根据字节码对照表寻找这段代码在jsc中对应的位置,字节码 对照表 https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Internals/Bytecode
在反编译的js搜索canSkip,上面代码的canSkip是最后一个
https://img-blog.csdnimg.cn/20190806204716968.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQ3NTM3NDg=,size_16,color_FFFFFF,t_70
这块字符串对应的代码在它前面,如图中所标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_893:}感谢分享,很受用 图呢?? 发错版块了,怎么删除或者移动到其他版块 学习谢谢
页:
[1]