天马阁

 找回密码
 立即注册
                                        →→→→→→→→→→→→ 1点击查看所有VIP教程目录长列表(总教程数269个) 2办理VIP详情进入 ←←←←←←←←←←←←
1 x64CE与x64dbg入门基础教程 7课 已完结 2 x64汇编语言基础教程 16课 已完结 3 x64辅助入门基础教程 9课 已完结 4 C++x64内存辅助实战技术教程 149课 已完结
5 C++x64内存检测与过检测技术教程 10课 已完结 6 C+x64二叉树分析遍历与LUA自动登陆教程 19课已完结 7 C++BT功能原理与x64实战教程 29课 已完结 8 C+FPS框透视与自瞄x64实现原理及防护思路 30课完结
64驱?封? 9 64反驱? 10 64位V? 11 绝? 12 ???课?
13 64透 ? 14 64U ? 15 64Q ? 16 64功 ?
17 64U ? 18 64模 ? 19 64多 ? 20 64网 ?
21 64注 ? 22 64火 ? 23 64棋 ? 24 64自二链L?
25 64破 ? VIP会员办理QQ: 89986068   
【请先加好友,然后到好友列表双击联系客服办理,不然可能无法接受到信息。】
27 加入2000人交流群637034024 3 28 免责声明?
查看: 4618|回复: 0

正确分类游戏检测与浅谈如何过游戏检测

[复制链接]

12

主题

0

回帖

14

积分

编程入门

Rank: 1

天马币
24
发表于 2024-3-5 09:25:33 | 显示全部楼层 |阅读模式


游戏内存检测的大体分类
1.数据校验
2.CRC校验
--------------------------------------------------------------------
关于数据校验,顾名思义也就是校验数据
数据校验到底是校验什么呢?
①如鼠标的XY 和人物的XYZ等
数据校验其实主要就是校验鼠标的XY  因为如果我们要写内存辅助,那么鼠标的XY是必须的,因为要写内存自瞄
校验人物的XYZ就是针对某些功能 比如瞬移
②人物手持枪械的数据,比如后坐力和射速
后坐力和射速,基本的数据在本地。我们要实现完美无后和超级射速,也必须要过掉这些校验我们数据的检测
还有很多就不一一列举了。




怎么区分数据校验呢?
①看数据类型 一般来说:四字节和浮点型等 通过直接改数据就可以实现的功能
比如鼠标的XY  假如当前鼠标X=20.0  我们把他改动为30.0 游戏里直接可以看到鼠标移动,那么这样的一般只是数据校验在工作

②看相关地址的汇编代码
比如你跳转到那个内存地址,看到的是一大堆乱码,而且是跟随你改变数值而变动的,那么一般是数据校验
因为CRC没理由去对这一部分相当于乱码的汇编代码去进行校验
还有很多方法,主要是依据经验去判断


数据校验一般在TP中存在于哪些模块?
根据笔者这几年来的经验来说 数据校验一般是存在于GameRpcs这个模块,当然这个说法不绝对,需要跟进去具体分析
有些数据校验也存在于游戏的主模块里 比如QQ的主模块就是QQ.exe也就是它的进程名


数据校验的原理是什么?
关于数据校验的原理,学过编程的人应该都知道数据算法这玩意
所谓的数据校验
就是把你的当前的游戏数据与服务器的数据进行比对,这是一种
把你的数据校验 通过一个算法计算 看看是否正确,这也是一种
如果不正确,相信结果大家也都知道,无非就是数据异常,封号
举一个小小的例子:
如游戏里 人物的血值(HP)为10的倍数 ,比如110.100等
如果我们这时候通过内存修改器(CE)去修改,比如改为999等
显然999是不能被5整除的  我在代码段里去写一个子程序 判断HP是否可以被5整除,如果可以就返回1,不可以就返回0
服务器接收到我的数据为1就是正常游戏,服务器接收到我的数据为0 就是异常游戏
这样就是数据校验的原理了
关于数据校验的分析就到这里 相信大家也都明白了


什么是CRC?如何区分CRC
这里有一篇文章:https://baike.baidu.com/item/CRC/1453359?fr=aladdin
游戏里的CRC,无非就是对游戏内存的汇编代码段进行校验 如add,mov等代码
给大家举个例子:
首先,通过CE查找对象的血量 然后对对象的血量进行内存访问,发现我们攻击对象,对象的血量就会减少,访问框里会有一个mov进行赋值
我们跳转到该地址,例如mov eax,0x100,我们改为mov eax,0  这样我们就达到一枪秒杀的效果
但是游戏开发者们不会那么傻
他们会通过CRC对这一大段汇编代码进行校验 如果发现和初始的代码不一样 也就是被改动了 游戏会立刻弹出异常
上面就是CRC的相关介绍


如何找出CRC?
举个例子,比如 0x400000的代码为 mov eax,[esi]  我们要实现一枪秒杀 要把代码改为 mov eax,0  这明显与原来的代码不同
这时候 我们把0x400000这个地址添加到ce的地址表里   然后右键查找是什么访问了该地址
CRC只会访问 不会去改写
大约等几秒(CRC是有一个周期的,这个看游戏开发者设置)
访问框里会出现相关代码,我们跟上去把他干掉就可以了(方法以后会介绍)


CRC一般在哪个模块里?
主要在TenRpcs 这个模块,当然说法依旧不绝对
不同游戏有不同游戏的检测方式,这些都需要去积累 我们才能准确的判断

关于CRC和数据校验  前者是校验游戏的汇编代码 后者是校验游戏的数据
如一枪秒杀等 一般属于CRC校验   内存自瞄的一般属于数据校验  这说法不绝对,如CX,DXF等游戏的检测十分变态
过游戏检测的时候就是和游戏开发者斗智斗勇的时候,这种感觉非常刺激

关于如何过游戏检测的相关介绍
1.直接hook游戏相关代码 让检测无法执行
2.在校验的时候 jmp到一个空白地址 对返回值或校验值进行赋值,或把校验jmp一个干净的代码段
3.线程过检测 直接斩断线程,让检测无法执行
4.阻止游戏的相关DLL加载
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

天马阁|C/C++辅助教程|安卓逆向安全| 论坛导航|免责申明|Archiver||网站地图
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表天马阁立场!
任何人不得以任何方式翻录、盗版或出售本站视频,一经发现我们将追究其相关责任!
我们一直在努力成为最好的编程论坛!
Copyright© 2010-2021 All Right Reserved.
快速回复 返回顶部 返回列表