反外挂系统设计方案

来源:互联网 发布:sql 教程 编辑:程序博客网 时间:2024/05/08 12:03

该方案是参考多家反外挂系统,加上自己对反外挂了解整理而来。

整个方案包含了反外挂系统中常见的所有功能。

 4.    系统框架设计方案

本系统基于C/S结构设计,包含服务器端和客户端两大部分。
服务器端主要负责策略定制与实施,并控制客户端的行为。
客户端主要负责具体的安全保护。如外挂扫描,防盗号,防修改游戏内存等。
下面是对各个部分负责的功能的描述:

4.1.    服务器端

服务器端包含两个重点模块:更新及策略。

4.1.1 更新

?    及时更新的意义:处理外挂能否及时更新很重要,不能让外挂出身未捷身先死!及时更新能让客户端在最短的时间内对外挂做出反击。
?    更新的内容包括: 特征库,新的处理策略等

4.1.2 策略

对异常账号进行限制登录、记录、删号等。

1.防脱机

实现脱机功能一般都是为了多开游戏客户端,所以防止脱机的同时要限制多开。
防脱机策略: 防止脱机外挂模拟数据包。让客户端定时发送数据包,数据包的内容每个客户端每次发送都不一样。如果发上来的数据无效则认为脱机。

2. 防多开

多开也是一个很严重的问题。好多玩家就是通过多开来赚钱为目的的。
防多开策略:
使用多种方式来记录客户端个数,并发到服务器端进行验证。

3. 记录用户登录

有些玩家使用自动挂机的外挂,有自动登录的功能,当断开连接后会自动重连。 如果某一个账号频繁登录或退出,则认为该玩家存在异常。

4. 防误判

如果添加了一个外挂检测机制,发现大部分的玩家被踢下线,基本可以判定这个机制有问题。为了不给玩家造成影响,服务器要对每个检测机制进行统计,及时发现这种存在问题,能自动屏蔽其效果

5. 延时踢人

如果发现某玩家在使用一款外挂,不马上断开服务器连接,而是等30分钟再断开。这样会在一定程度上阻止外挂更新速度

4.2.    客户端

4.2.1. 自我保护

1. 定时向服务器发送心跳包。
2. 实时检测自身线程状态。
3. 实时检测自身代码完整性。
4. 自身实现系统关键API(如CreateThread,OpenProcess等)。
5. 自身线程崩溃捕获机制,防止自身功能异常导致游戏进程退出。

4.2.2. 游戏保护

1. 校验游戏代码完整性。
2. 监控游戏敏感数据。
3. 监控游戏敏感函数。

4.2.3. 反调试

    通过检测进程调试标志等方法。

4.2.4. 防多开

主要使用进程间通信机制来实现防多开如:共享内存,互斥量,事件等。

4.2.5. 用户验证

记录用户鼠标键盘的输入状态信息,如果发现异常,就让其输入验证码。

4.2.6. 防盗号

加载驱动防盗号机制如防止键盘被监听、防止进程间通信。

4.2.7. 防加速

4.2.8. 防数据包侦听

让游戏不通过调用系统api通信函数,防止被侦听。

4.2.9. 特征码扫描

根据特征码,扫描已知的外挂或非法程序是否正在运行。

4.3.    驱动

4.3.1. 阻止非法进程对游戏进程的访问

1. 阻止上层打开句柄操作。
2. 阻止进程间句柄复制。
3. 阻止上层进程间内存读写。
4. 阻止使用驱动读写游戏内存。

4.3.2. 阻止模拟鼠标键盘

阻止通过调用系统API对游戏窗口发送键盘或鼠标消息。

4.3.3. 检测加速

4.3.4. 驱动级扫描

1. 扫描驱动模块代码

2. 通过驱动扫描其他进程代码(可以过进程保护)

4.3.5. 防多开

4.3.6. 防注入

1. 防输入法方式注入。

2. 防SetWindowsHookEx方式注入。

3. 防止远程线程注入

4.3.7. 反调试

使用清debugport等的方法防止调试器调试游戏进程。

4.3.8. 防盗号

防止输入的密码被非法软件监听。

4.4.    加壳保护

4.4.1. 代码保护

1). 使用虚拟机技术

2). 使用代码变换技术

4.4.2. 驱动防护

加载安全驱动,防护非法软件攻击

转载请注明出处。ddlx studio。点点灵犀。 http://blog.csdn.net/sunyikuyu