mengyi 发表于 2022-8-21 00:12:43

过检测大概是一个什么样的思路

本帖最后由 mengyi 于 2022-8-21 00:15 编辑

易语言小白一枚 想请教各位大佬 针对国内外厂商 喜欢怎么检测 过检测大概是一个什么样的思路.

以喃· 发表于 2022-8-21 00:12:44

一般游戏的检测机制然后怎么过掉他这个检测的思路,我这里就随便写了个模仿游戏子弹的吧,先给你们看一下不加检测的话是什么样。这是不加检测的,可以看到这游戏基址的数值是可以随便改的,然后我在加一个检测,可以看到,一修改,他就会被检测到,然后退出程序。就把这个当做一个游戏的功能基址来看待的话,就是这里,子弹数量是不能修改的,一旦修改,程序会检测到修改了这个地方的数值,然后提示被检测到。然后怎么过掉呢,我们来分析一下,先访问这个基址,看是哪个地方访问了这里,这里看到两个,我们都看一下, 第一条里面是没有检测的,这里看到Push,这个汇编指令就是,把这个地址存放到栈内,看一下源码吧。这里是访问地址后,出来的第一条,也就是把这个变量放到编辑框的内容,这里就不是一个检测,这里的计时器,就是每多长时间,访问一次这个地址,我这里写的是一秒,也就是一秒检测一次。我们看第二条,进来有个cmp。这个汇编指令是什么呢。就是比较,用1E和这个地址进行比较,1E我们看一下,十进制也就是30,我们会到源码看一下,访问后第二条里的cmp,比较测试是否大于1E,十进制也就是30。然后我们知道这里是一条检测的话,我们下段,这个call就是一个检测,然后这个call是什么呢,call在汇编指令里就是调用函数,这些汇编你们其实都是需要去掌握的,我给你们百度查一下,里面都有解释,call这里解释的是过程调用,源码里也就是调用这个,然后我们直接把这里nop掉,可以看到,这样检测就过了,把他nop掉,也就是不执行这个call,在源码中就是把这里给屏蔽掉了,就不去调用这个检测的这个子程序。当然如果一个游戏不可能就一条检测,他还会有其他的,比如有两条或者三条检测这个地方,或者是CRC嵌套,就是还会有一个地址来检测,模仿游戏检测demo.exe+10CB ,来检测这个地方是否被你屏蔽掉,反正就需要一层一层的接着找吧,然后其实这也是随便写的。其实像这种如果具体分析的话,也不需要NOP,在讲一下HOOK过检测吧。
这里可以看到,就是如果执行这个call之后会跳到下面,我们分析一下这个call里面的东西,我怎么开了两个。这里看到一个cmp,就是比较这个1E也就是30,我们这里直接改一下看看,闪退了,字节对不齐,所以会闪退,这里直接改也可以,然后还有很多方法,比如申请一段空白内存。然后给这个地址赋值,

Kaito 发表于 2022-8-21 04:07:02

用脑子      

xiaoyingryf 发表于 2022-8-21 11:01:45

你是开发者在保证保证游戏运行稳定流畅得前提下你要怎么做检测?

故事丶太残缺 发表于 2022-10-1 04:51:21

学习看看,顺便混点b
页: [1]
查看完整版本: 过检测大概是一个什么样的思路