过掉某游戏数据检测

 

遇到一个游戏,不管是修改怪物的血量还是修改人物的坐标数值,直接会检测到。

 

想了两种情况:

  1. 每次都要和服务器上的数据进行一次验证是否一样,不一样就说明非法更改。
  2. 每次和本地保存的数据进行检测,不一样就非法。

 

针对1情况,看了下发包函数,走路的时候会发包,但是在断网情况下修改了坐标数据,还是会马上出现非法,所以这个肯定是本地验证。

 

既然是本地验证,那直接对保存坐标的位置用CE看什么位置访问,正常未修改的时候:

走一次路会有这么多的访问:

扫描二维码关注公众号,回复: 4971465 查看本文章

那么肯定检测非法的时候也会访问,看看非法时候访问结果:

发现只有这两个地址有访问过,然后直接非法。先对少的数据在OD下断看看,直接修改读取后的eax值,发现并没有弹出非法,只是显示的变了一下,所以这个位置肯定就不是检测非法的地方了,那么只剩下第一个地址了。跟过去看看:

发现这里只是读取出数据然后进行一个计算,那么跟回前几个调用的地方都看看,到最外层的时候可以发现是一个很长很长的函数,跟到这里可以看见一个cmp进行比较:

这里jnz试试跳过去,发现没修改内存也直接非法了,说明这就是检测的判断跳转处,上面的函数也跟了很久,代码很多,但就是读取内存中的值以及将加密后的值进行解密,再进行比较,如果不一样说明被非法修改过了,就会非法,修改这里的jnz就可以随意改内存啦:

 

猜你喜欢

转载自blog.csdn.net/a893574301/article/details/83343696