游戏反外挂系统的检测逻辑 ——一场永不停歇的猫鼠游戏
我在一家游戏公司做了四年反外挂。入职第一天,主程跟我说了一句话,我到现在都记得:“你不是在写代码,你是在跟人斗。代码是死的,外挂作者是活的。你堵上一个洞,他明天就找到另一个洞。你唯一的优势是你在城里,他在城外。但别忘了,城墙是你砌的,他比你更想知道哪块砖是松的。”后来我发现他说得太对了。一、外挂到底在干什么要理解反外挂,得先理解外挂在干什么。所有外挂,不管多花哨,本质上就干三件事:看到不该看到的,做到不该做到的,快到不该快到的。透视挂能看到墙后面的敌人——它读取了游戏内存里其他玩家的坐标,然后画了一个框。自瞄挂能自动锁头——它修改了你的准星数据,或者直接往服务器发了一个精确的射击指令。加速挂能让你跑得比博尔特还快——它修改了本地的时间流速或者移动速度的数值。再往底层说,外挂的实现手段也就那么几种:读内存。游戏进程的内存空间里存着所有数据——你的血量、你的坐标、敌人的位置、子弹的轨迹。外挂用ReadProcessMemory之类的系统调用,或者注入一个DLL到游戏进程里,直接读这些数据。读到了敌人坐标,透视挂就成了。写内存。读到还不够,还要改。把你的移动速度从5改成50,加速挂就成了。把你的子弹伤害从30改成30000,秒杀挂就成了。把你的坐标直接改成对方基地的坐标,瞬移挂就成了。拦截封包。游戏客户端和服务器之间的通信是通过网络包的。外挂可以拦截这些包,看里面的内容(知道服务器发了什么),也可以修改包的内容(篡改你发给服务器的数据),甚至可以凭空构造包(模拟你根本没做过的操作)。模拟输入。最"温和
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2437271.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!