反外挂方案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

反外挂方案
Gu xiao bo 2009-05-31
系统A.Client Protect
模块1.Anit Api Hook
所谓HookAPI,就是改写程序的IAT,再调用我自己写的用于替换原API函数的函数。

在我们自己写的API函数中,我们可以进行我们想要的工作。

而所谓调用自己的函数,就是把原函数参数都传给我的替换函数。

我们就可以利用这些参数去干我们想做的事。

而系统呢,我想由于微软设置的这个钩子的目的,所以不会去检查替换函数是否就是原函数,只要参数、返回值符合条件就行,要不会出错。

替换函数的返回值最好是原函数,否则有可能会出错HookAPI时,exe程序起到的作用就是进行Hook,把dll 注入到要Hook的程序,并且传回要挂接的进程的ID或者全局钩子,以便查询所要挂接的模块的IAT。

如果不注入进去,系统不会让你去查询IAT的。

DLL做的事情是确定要挂接哪个函数和这个函数在哪个DLL中等。

游戏程序调用的所有DLL的函数地址作动态检查,防止API hook,APIHOOK 是游戏外挂的主要手段,检测出APIHOOK是目前杀毒中比较重要的手段,这里主要以SDK lib的形式供游戏客户端使用。

模块2.Anti Memory Virus
检测并查杀出内存病毒和木马,是防止盗号的有力手段,这里要使用病毒库,要做病毒库的更新和维护,内存查杀病毒木马最终可以做成SDK lib的形式.
原理是通过psapi列举出内存模块,边列举边比对内存特征,如果比对上了就报出病毒,当然这个基本上是内存PE文件杀毒
模块3.Kill file type Virus
检测和查杀磁盘重要目录下的病毒,是游戏反木马的很重要的手段,这里要使用病毒库,也要更新和维护,最终可以做成SDK lib的形式.
通过文件API函数,查找文件,并比对文件特征,如果比对上了就报病毒,可以针对zip,rar,7z 等压缩包,也可以针对html,htm,vbs等脚本文件,主要是针对PE格式的文件.
模块4.Anti KeyLog
键盘记录有以下几种
Global Hook (66%)、Cyclical polling(29%)、Driver based(5%)
反键盘记录最终以驱动形式发布.
反键盘记录原理分析:
就是替换键盘类驱动的KeyboardClassServiceCallback,然后把得到的ScanCode传递到用户态,由位于Winlogon.exe的一个线程负责调用NtUserSendInput,将按键消息发给当前焦点窗口。

1,选用KeyboardClassServiceCallback的好处是,比键盘过滤驱动更底层,对PS/2或USB键盘通用。

2,用Winlogon转发消息的好处是,自动适应多用户(session)的情况。

3,用NtUserSendInput的好处是,不会被Windows消息钩子挂钩。

4,虽然它没有构建起完全独立的键盘输入通道(这么做太复杂,兼容性不好),但对于没有重建的部分,通过检测钩子的方式弥补。

5,它的钩子检测功能对于用户态不错,遗憾的是,居然漏掉了中断服务挂钩的检测,实在是个大疏忽。

另外,作为通用型保护机制,不可避免的具有一些局限性,比如无法防御用窗口子类化来做键盘记录。

模块6.Anti Debugger
利用花指令,检测Debugger API,检测int 3,int 1,是否在某个指定地址存在调试异常等来反动态调试的手段,最终以SDK lib的形式发布,供游戏程序员在代码编写的时候保护重要代码段.
模块7.Process Address Vitualize
Kernle32.lib,Ws2_32.lib中的函数地址虚拟化以后,增加了外挂程序员调试游戏和分析游戏数据报的难度,基本没法再ws2_32.send , ws2_32.sendto, ws2_32.recv, ws2_32.recvfrom处设断点,基本就排除了跟踪程序流程分析数据报格式的做法。

能静态的防止IDA逆向找ws2_32的调用.
模块8.Memory Dump Protect
Memory Dump 有ring 0下的dump,Dynamic unpacking,获取kernel module的dump,Dll-Injection法的dump;
通过检查PE 的PECheckSum,检查PE是否完整,禁止手工修改指令脱壳, PECheckSum AntiDebugger Lib 禁止OLLYDBG之类的调试阶段脱壳.
模块9.Anti Get Password
Anti 技术的编辑框,可能是通过子类化的方法来判断取字符的合法性,某些后门程序通过新建编辑框的形式,通过远线程注射的方式还是能取出密码的;
现在还有列举IE框架,可以取出IE上的密码框中的密码.
还有就是键盘鼠标HOOK,有驱动型的HOOK和应用层API的HOOK,可以钩出密码框的密码.
现在还主要通过软键盘的方式保护密码安全.这里要开发一个软键盘系统
模块10.Anti driver
防止安装驱动型的木马,在RING0层用MmGetSystemRoutineAddress来获得函数ZwLoadDriver的地址。

并从这个函数地址后面的第2个字节中取得服务号。

从而获得以服务号为下标的数组元素,然后用SSDT HOOK ZwLoadDriver,这样可以监视驱动木马的加载.
模块11.Pack PE
开发一个PE文件加壳加密工具,将来供游戏加壳保护使用.
系统B.Clinet Upgrad e & Collection Spyware System
模块1。

客户端反外挂插件升级系统SDK
客户端反外挂系统除了固定安装上的反外挂模块,还有要根据外挂特性的升级更新设计,所以要有插件设计,供客户端使用的反外挂做成DLL,提供客户端下载,实时安装,这里做成支持插件的SDK形式.
模块2。

客户端Unkown Spyware系统SDK
客户端反外挂系统要做未知外挂侦测和未知SPYWARE的检查和上报服务器的系统,在客户端要做驱动级的代码来检测,上层提供SDK供游戏调用
系统C.Unknow Spyware Collection
模块1。

Communication Collection Server (FTP SERVER)
反外挂系统要做病毒,木马,外挂的收集工作,必须建Collection服务器,这个即所谓的云计算,客户端作为检测外挂的前沿,后台服务器也是关键,这里要考虑到上传通讯的流量问题.
模块2。

Background Unknown Spyware Recognize System
反外挂系统后台要开发一套基于虚拟机运行的自动病毒和外挂分类识别的系统,给反外挂工作做初步分析用,比如初步生成病毒类型,外挂类型,病毒升级特征码
模块3。

Auto /Manual Generate SpyWare Signature
反外挂系统后台要把收集来的外挂和病毒做分析日报,可以自动分析,但是分析的比较粗,要搞专人针对性的分析,出分析周报.
系统D.Anti Spyware Policy Server
模块1。

Upgrade Anti Spyware 和anti 外挂插件
反外挂系统后台提供统一的反外挂的插件下载控制界面,通知所有客户端,或者是部分客户端下载新的反外挂插件.(要根据公司反外挂的策略指定)
模块2。

Upgrade Anti Spyware 和anti 外挂插件的策略
反外挂系统后台提供一个反外挂的策略配置页面或者是策略配置软件
注: 这里要提供一台外挂配置服务器
系统E.后台Spyware 处理系统
模块1。

手工分析/报表/signature
反外挂系统建立起来以后,通过反外挂系统收集来的病毒和外挂要建立日常的分析机制生成外挂的固定格式分析报表,生成病毒查杀签名文件.
模块2。

数据库备份病毒分析日志和病毒样本
反外挂系统建立起来以后,要做病毒,外挂样本的存储和分析日志的存储备份工作
流程框图。

相关文档
最新文档