网络游戏安全之游戏检测-CRC篇 ②实战某网易游戏
0x02:对某厂商的网络FPS游戏实战CRC对抗测试
⒈以终结者2为例:
该游戏可实现除草功能,地图除草方法:
CheatEngine工具搜索字节数组:55 8B EC 8B 45 08 83 EC 08 8B 48 10 8B 01,找到的地址减去0x22,对该地址nop即可实现除草
⒉分析一下除草地址的检测
由于我们是搜索特征得到的,该游戏的除草功能也是通过修改代码段nop实现的,所以触发了代码的CRC校验检测,符合我们今天讲的知识
查找访问,发现四条访问地址,这个即为我们的CRC检测的访问:
查看相关的汇编代码:
发现:
①疑似加密密匙的东西
②所有的四条访问均来源于同一个代码段,观看代码得知属于同一个Call,也就是检测Call
③由于该检测Call被厂商修改过,所以属于比较特殊的变形CRC
⒊下断检测的代码,观察寄存器
只能推断EAX有可能是校验的次数,也就校验的大小,其他的寄存器并无法得知是否是校验值
⒋去函数的头部看一看
头部下断:eax疑似校验值,edx疑似校验大小,也就是循环的次数
继续运行,发现eax和edx同时变化:
edx在这里变化了两次,第一次为我们的计次,第二次为edi的数据,我们尝试修改头部的数据进行攻击测试:
[由于涉及游戏安全和平衡,在这里,我不将写入的数据进行公开,大家有兴趣的可以自行研究实践]
下hook处理:
①分配内存写数据
因为是jmp 5字节hook,所以要注意写法
②跳转至hook位置
只要CheatEngine工具的访问不出现新的访问,那么检测就过掉了
总结:
⒈外x挂和反外x挂的斗争依然在继续,各大游戏厂商必须加强游戏的检测防护,避免外x挂产业泛滥!
2.多层嵌套的检测是必须的,在嵌套的同时,还应该注意代码混淆的程度也要加大!
3.务必加强对CheatEngine等工具的检测,一旦发现,就封号处理,提高逆向难度!
声明:
1.游戏逆向仅限于技术交流,切勿用于违法犯罪,切勿开发违法犯罪的相关外x挂、辅x助等工具!
2.本文章由个人原创作品,如需转载,请务必带上出处!
3.如果本人中有疏漏和错误,请及时提醒我更正,万分感激!
——————————————————————————————————————————————————————————————————
⒈以终结者2为例:
该游戏可实现除草功能,地图除草方法:
CheatEngine工具搜索字节数组:55 8B EC 8B 45 08 83 EC 08 8B 48 10 8B 01,找到的地址减去0x22,对该地址nop即可实现除草
⒉分析一下除草地址的检测
由于我们是搜索特征得到的,该游戏的除草功能也是通过修改代码段nop实现的,所以触发了代码的CRC校验检测,符合我们今天讲的知识
查找访问,发现四条访问地址,这个即为我们的CRC检测的访问:
查看相关的汇编代码:
发现:
①疑似加密密匙的东西
②所有的四条访问均来源于同一个代码段,观看代码得知属于同一个Call,也就是检测Call
③由于该检测Call被厂商修改过,所以属于比较特殊的变形CRC
⒊下断检测的代码,观察寄存器
只能推断EAX有可能是校验的次数,也就校验的大小,其他的寄存器并无法得知是否是校验值
⒋去函数的头部看一看
头部下断:eax疑似校验值,edx疑似校验大小,也就是循环的次数
继续运行,发现eax和edx同时变化:
edx在这里变化了两次,第一次为我们的计次,第二次为edi的数据,我们尝试修改头部的数据进行攻击测试:
[由于涉及游戏安全和平衡,在这里,我不将写入的数据进行公开,大家有兴趣的可以自行研究实践]
下hook处理:
①分配内存写数据
因为是jmp 5字节hook,所以要注意写法
②跳转至hook位置
只要CheatEngine工具的访问不出现新的访问,那么检测就过掉了
总结:
⒈外x挂和反外x挂的斗争依然在继续,各大游戏厂商必须加强游戏的检测防护,避免外x挂产业泛滥!
2.多层嵌套的检测是必须的,在嵌套的同时,还应该注意代码混淆的程度也要加大!
3.务必加强对CheatEngine等工具的检测,一旦发现,就封号处理,提高逆向难度!
声明:
1.游戏逆向仅限于技术交流,切勿用于违法犯罪,切勿开发违法犯罪的相关外x挂、辅x助等工具!
2.本文章由个人原创作品,如需转载,请务必带上出处!
3.如果本人中有疏漏和错误,请及时提醒我更正,万分感激!