讲解FPS游戏内存crc检测原理教程
2023-05-29 来源:百合文库
FPS游戏发展至今,阻挡辅助开发者脚步的往往不是数据和功能开发,而是高难度的检测。现如今,游戏的各种检测的手段越来越多,也越来越五花八门[s:45]。如:检测参数,检测堆栈,检测注入等等。其中CRC 是众多检测手段中最为常见的,同时在各大新手和老鸟之间也广为津津乐道。那么今天和独立团辅助学院的各学员大家一起慢慢揭开“神秘”的CRC。先来了解一下什么是CRC,百科给我们的解释是:CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。那么在游戏领域,咱们还是依照一直以来的通俗易懂的讲下,CRC 其实就是个对比。
那么它既然是对比,那么就需要两个值,一个是被修改的地址/代码段的值,一个是用作对比的值。当地址的值 != (不等于)对比的值,那么反作弊系统将通过发包等手段告诉服务器,进行踢下线,封号等操作。那么,CRC一般在内存中都长什么样的呢?我再给各位独立团学员举个例子某内存代码段中,如果出现以下代码:===================moveax,xxxCMP eax,1jnzxxxxxxxx===================假设,jnz 这局代码是执行换弹完毕的动作,那么咱们想要零秒换弹的功能,在服务器不做验证的情况下,咱们可以修改cmp或者 jnz为 JMP,在换子弹的时候,强制执行换弹完毕的动作,那么如果改了这个地方,CRC会如何查呢?{:104_255:}大家动脑子想想首先我们学过汇编吧都知道下面这些汇编指令对应的比如: