百合文库
首页 > 网文

讲解FPS游戏内存crc检测原理教程(2)

2023-05-29 来源:百合文库
JNZxxxxxxxx二进制的机器码是:0F 85xxxxxxxx
CRC百科
那么,咱们再来看看,JMP的模样是E9 xxxxxxxx假如,我将此处改成CALL?他又会变成什么样?机器码就会变成如下:E8 xxxxxxxx因为call 指令对应E8通过对比,相信大家知道哪里发生了变化。原代码,为 0F85但是不管你如何修改,此处都会发生变化,CRC扫描的即是这个变化的值。所以在游戏里内存区域某个地方,可能就会有这样一串类似下面的效验的代码:============================mov eax,刚刚JNZ代码段的值cmp eax,0f85jnz 是否上报异常============================来检查是否被辅助篡改。那么问题来了,我们在此检测代码处,咱们是不是又可以给他修改,是否我们可以不让其执行上报的代码呢?回答是:肯定的同样,在其他地方,也可以查询此处是否被修改。
那么这个时候咱们要伪造几层,处理多少个地方,取决于游戏查了几层,验证了多少地方。通过以上的例子,相信大家对CRC有了一个简单的了解,以后我们黑色衬衣啊会随着课程不断更新出版深入下去,而讲解到这方面的知识。接下来咱们实际的去游戏中,更深层的揭露它的“面纱”。相信穿越火线(cf)大部分人都知道,一个发展了十多年的老游戏,检测技术已经相当成熟,有很多地方值得我们学习和借鉴。今天以该游戏的内存透视为例子(我找出来的基址是: 7B65CC)该地址在未修改的情况下,默认的值为16777217即十六进制的1000001,那么,将1000001改为某些值的时候,即可实现透视效果,那么我们可以在这里可以简单的猜测和了解一下它这透视的实现原理(当然这不是本文主要探讨的内容)——该地址可能与游戏中的某些模型有关,D3D渲染引擎读取该地址的值,当人为的修改后,即改变了渲染的顺序或者加载不了某些模型实现透视效果。

讲解FPS游戏内存crc检测原理教程


效果图如下:
此时此刻,大家可以看见人物透视实现了,同时也改变了该地址的值,当然这游戏如此关键的位置,肯定是有CRC或者其他手段在循环检测,即循环访问该地址,咱们CE里可以右键查看访问该地址的代码,如下几图:经过观察发现,我们前两条代码基本可以忽略,因为检测代码不可能在短短几秒钟内访问上千次(所以可以排除掉)我们
值得关注的是第三条访问代码,每隔3秒钟进行一次访问,是不是和印象中的检测很像呢?该代码究竟起了什么作用,是不是让多数人束手无策的"CRC"?,咱们一步步把它分析出来就清楚了OD附加后,跳转至该访问代码处:发现如上,代码段位于 gamerpcs模块,那么这个时候咱们就要先记一下该地址位于模块中的所处位置,防止游戏奔溃导致数据丢失计算出该地址为GameRpcs.dll 33D5F。记录好后,在该位置下段,咱们观察一下EAX的值:EAX=007B65CF [007B65CF]=0x101 到这里大家回想下跟咱们内存透视地址007B65CC 是不是很接近呢?那么把该地址拿到CE中进行观察和对比,如下图:
猜你喜欢