自己想写一个反外挂的程序,老虾们来给指点一下啊

red_berries 2007-03-27 01:56:44
(1)获取系统当前所有窗口和进程信息,与已知的外挂进程窗口比较,如发现,立即终止其运行,如无法终止,就将游戏终止。
(2)HOOK系统所有进程中的可以修改内存的API。
(3)查找游戏进程所载入的动态链接库,如检测到非法的链接库,即结束游戏运行。
以上前两点是我在网上看到的办法,但稍微高级一点的外挂好像都能逃避掉,第3条是我偶然想到的,不知道是不是实用。偶还是学生,第一次把在书上看到的东西拿出来PK,老鸟们指教一下我上面的方法有什么好点的改进办法吗?如果你们有好办法了,教教小弟啊,先谢谢了
...全文
2105 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovezhufei517 2009-12-18
  • 打赏
  • 举报
回复
学习了,现在反外挂基础确实很强了,不过中国的外挂制作者是跟着游戏一步步走过来的,所以成熟的很快
(游戏制作没成熟,外挂制作先成熟了)
街坊跳舞 2007-11-12
  • 打赏
  • 举报
回复
用串口
red_berries 2007-04-04
  • 打赏
  • 举报
回复
可我看了他用的是是TCP的协议啊,不用socket用什么呢?
WingForce 2007-04-04
  • 打赏
  • 举报
回复
通讯不一定要用socket接口
red_berries 2007-04-03
  • 打赏
  • 举报
回复
我HOOK掉了游戏进程的 sendto,recv,connect这三个API函数,然后在我写的替换这三个函数的中把这些函数的参数中的目标IP和端口,还有套街字全换成我自己的,可游戏一运行发现这三个函数好像没HOOK掉,用防火墙看了下,目标IP没有变化?这是怎么回事啊
guanwl 2007-03-30
  • 打赏
  • 举报
回复
make
red_berries 2007-03-30
  • 打赏
  • 举报
回复
汗,难道没有人对外挂有点研究吗?这分怎么散啊
red_berries 2007-03-30
  • 打赏
  • 举报
回复
想不明白,别人修改什么?
KeSummer 2007-03-30
  • 打赏
  • 举报
回复
对于第一点,实质上WG起作用的是注入到游戏进程中的DLL,除非结束掉游戏。
对于第二点,建议使用内核hook。ZwOpenProcess,ZwRead(Write)ProcessMemory等系统服务。
对于第三点,没用的,因为杀毒软件等等都会使用消息钩子等。
「已注销」 2007-03-29
  • 打赏
  • 举报
回复
这个不好做,别人一修改你就又得更新
red_berries 2007-03-29
  • 打赏
  • 举报
回复
我现在有一点想不通,如果游戏客户端在游戏一启动就HOOK掉LoadLibrary()那几个载入动态函数库的函数那就没法到游戏进程中放钩子了,应该也就修改不了游戏内存了吧,要是这么说,游戏制造商为什么不这么做呢?????
red_berries 2007-03-29
  • 打赏
  • 举报
回复
我现在有一点想不通,如果游戏客户端在游戏一启动就HOOK掉LoadLibrary()那几个载入动态函数库的函数那就没法到游戏进程中放钩子了,应该也就修改不了游戏内存了吧,要是这么说,游戏制造商为什么不这么做呢?????
skypu 2007-03-29
  • 打赏
  • 举报
回复
mark...
red_berries 2007-03-28
  • 打赏
  • 举报
回复
老鸟不要吝啬啊
_V_ 2007-03-27
  • 打赏
  • 举报
回复
安博士在街头篮球应用中的漏洞分析
天联世纪的街头篮球是国内第一家使用安博士HackShield反外挂系统的网络游戏,由于使用了较多的底层技术,在兼容性方面存在问题.下图为HackShield在Windows 2003下启动失败的界面:
尽管应用了HackShield,在大陆还是很快出现了用于练级刷分的脱机外挂,街头篮球战神:
HackShield仍然使用类似GameGuard的工作模式,在文件保护,进程隐藏方面下了很多功夫,普通的工具,包括SoftICE,OllyDbg,LordPE以及任务管理器等等都无法进行分析.但试图在Windows系统中彻底隐藏信息是不可能的.
下图是HackShield使用的驱动程序EagleNT.sys,与GameGuard不同,该驱动程序并不以文件方式存在:
EagleNT.sys替换了一些内核服务函数:
替换的目的主要是阻止调试工具和在内核级别阻止其他进程对游戏进程的内存读写(GameGuard在用户级别用户用API HOOK的方式实现).驱动还负责监控系统中的进程创建过程,在系统所有进程中注入HackShield的DLL拦截API,监控API调用.
HackShield启动后游戏进程的模块列表如下:
其中EGRNAPX2.dll将注入系统中的所有进程:
EGRNAPX2.dll拦截进程中的部分系统API调用,阻止外挂进程针对游戏进程使用这些API,比如用户键盘鼠标输入模拟的SendInput,注册消息钩子的SetWindowsHookExA等.下图为SetWindowsHookExA被HOOK后的代码:
HackShield与GameGuard并没有本质上的区别,除了在驱动文件,HOOK方式,进程隐藏等方面有所改进,保护强度略有提升以外,其反外挂的基本思路包括实现方式都如出一辙.在这类系统对付脱机外挂的唯一手段,服务端验证方面,HackShield可能还不如经过后期改造的GameGuard.街头篮球战神并不需要游戏客户端和HackShield的任何文件就可以使用,说明HackShiled在服务端验证方面存在漏洞.


成熟反外挂产品需要具备的特点

经过上述分析,我们认为一款成功的反外挂产品,应该具备下列特征:
无法剥离
与游戏本身紧密结合,通过与游戏过程的紧密绑定,保证反外挂系统的代码无法与游戏剥离.
有效存在和检测
适当地使用而不是依赖于底层技术,反外挂系统应该在逻辑上保证自身的存在和检测的有效性.
快速更新
没有一劳永逸的系统,也没有不可破解的技术,反外挂系统在设计时就应该保证相当的扩展能力和快速更新能力,而且在更新成本上要远低于外挂,并且不能影响原有游戏系统正常运行.
从实际运营角度来看,成熟的反外挂产品还需要满足以下特征
对于游戏用户透明
反外挂产品是保障游戏公平环境和游戏生命周期的周边软件系统,不能导致游戏的可玩性和剧情的不连贯
易于使用,附加成本小
游戏开发商的人财物资源集中在游戏产品和技术稳定性的开发商,游戏运营商的各类资源集中在游戏运营,宣传,维护,销售上,不能因为集成反外挂产品,要求游戏开发商和运营商投入大量的人力,物力,时间,财力成本.另外作为附加系统不能影响又有游戏系统的稳定,不能降低游戏主系统的系统,不能危害原有游戏的加密安全.
判定准确,不会造成不良市场反应
反外挂产品目的是保持游戏环境的公平,如果反外挂产品不能准确识别正常用户和使用反外挂的用户,造成错误的判断,那么为了解决一个公平问题引入新的不公正问题的反外挂产品是不成熟,不适合投入商业用途的产品.
及时发现并处理,有效引导用户健康游戏心理
外挂对游戏的影响是具有时效性的,如果不能在发现外挂之后,及时处理会导致外挂迅速普及到游戏用户群体,并成为游戏的寄生产品,如病随形.到了外挂使用的用户比率较大的时候,如果再进行处理就很容易造成壮士断腕的悲剧,严重危害正常游戏运营商和开发商的权益.及时包含两层含义,一是使用反外挂的技术手段后及时生效,二是发现外挂使用者时反外挂程序将自动识别非正常用户并及时合理的进行处理.
长期有效治理,彻底摧毁外挂的灰色产业链
外挂治理问题贯穿游戏生命整个周期,一时的有效准确及时的治理,并不能彻底保护游戏世界的纯净,切断外挂的灰色收入是关键,之所以外挂制作者那么顽强坚持,就是因为外挂收益丰厚,所以长久有效的反外挂技术产品才是可用的产品,才可以有效治理好外挂.
根据游戏外挂当前情况,选择正确的治理策略
真理和谬误就在一步之遥,只有对症下药才能治病救人!重症不宜猛药,否则会造成灾难性后果.要根据外挂对游戏侵害的程度制定合理的外挂处理策略,才能在有效保护原有用户群的前提基础上达到治理外挂的最根本目的——保障游戏生命周期,确保游戏商的企业利益最大化.


主流反外挂技术的优缺点比较
目前反外挂技术几种实现方法

使用动态变换图形提问来判别外挂行为
优点:适合场景类RPG游戏
缺点:透明性差,准确度无法实现100%,存在误判,策略处理能力差
典型产品:《梦幻西游》,《A3》,《QQ幻想》

使用外挂程序特征识别扫描
优点:采用成熟的病毒特征扫描技术
缺点:及时性差;长效性差,反外挂方更容易疲劳;透明性差;易用性差;策略性差
典型产品:金山公司金山游盾

在核心驱动层监控并抑制各类程序进行各类HOOK动作,给游戏客户端增加一层保护伞
优点:对于内挂问题有一定程度解决
缺点:长效性差,监管计算全部程序难度大漏洞多,容易被新的Windows系统的底层技术绕过可靠性差;
透明性差;策略性差;容易被破解剥离.
典型产品:韩国Inca 公司用于《奇迹》的Game Guard;安博士HackShield

在游戏通讯层动态变换并进行外挂程序识别,并进行有效及时有效的处理
优点:基本适用于全部封包类RPG游戏外挂和内挂
缺点:对于键盘模拟类外挂治理效果差.但能有效保障透明,易用,准确,及时,长效,策略
典型产品:NES系统
典型应用:《热血江湖》一款超过25万人同时在线游戏近一年持续稳定地使用;联众《炸弹超人》;
上海米果的《真封神》等十几家国内外厂商和游戏产品.



_V_ 2007-03-27
  • 打赏
  • 举报
回复
Game Guard
Game Guard随游戏客户端启动,启动后检查自身版本并自动更新到最新版本.启动后,首先加载设备驱动进入Ring 0级获得系统的控制权,在NT系统中使用的驱动程序为npptNT.sys.Game Guard使用设备驱动监控系统的进程创建动作,从而保证在系统的所有进程,包括游戏启动时已有的和启动以后新建的进程,中注入Game Guard的模块npggNT.des,该模块拦截所注入进程的部分系统API,实现对系统API监控,防止外挂进程针对游戏进程的有害操作.随Game Guard启动的还有一个GameMon.des进程,该进程主要负责对非法进程和模块的特征码扫描.为保证模块自身的存在,Game Guard提供一个可以即时更新的服务端认证模块,即Game Guard的客户端模块需要与服务端进行加密验证通讯以确认客户端模块是否正常工作,后期增加了对客户端程序代码的验证,因此在一定程度上可以阻止脱机外挂,但这种验证与游戏过程无关,因此仅仅是增加了外挂模拟的难度.

HackShield
HackShield使用了同样的自动更新方式,也利用设备驱动获得控制权,驱动程序EagleNT.sys(NT系统)动态生成,不需要磁盘上保留程序文件.HackShield在所有进程中注入的模块为EGRNAPx2.dll,API的拦截方式与Game Guard也有所不同.除了实现API监控外,EagleNT.sys还接管了NTOSKERNAL中的系统服务函数:NtOpenProcess, NtOpenSection, NtReadVirtualMemory, NtWriteVirutalMemory, NtSuspendThread, NtTerminateThread等,目的是阻止各种用户级和核心级调试工具,也可以更有效地防范外挂读写游戏内存.HackShield同样也实现了对外挂进程和模块的特征码扫描.与Game Guard的服务端认证类似,HackShield提供"服务器连动防止外挂",即客户端定时地根据服务端的请求返回正确的响应以验证客户端模块不被篡改,同样这种请求-响应包含了部分对客户端程序的完整性检查,但与游戏过程还是没有什么联系.HackShield还注册了一个WH_DEBUG钩子,估计是用于检查阻止其他消息钩子,但对于底层键盘钩子并无效果.

根据前面的介绍,Game Guard和HackShield都使用了大量的底层技术,据HackShield的演示文档,HackShield,HackShield Pro和Game Guard在技术运用上的差异如下:
项 目
HackShield (H)
HackShield Pro (HP)
Game Guard (I)

适用技术
User Mode 10%
Kernel Mode 90%
User Mode 40%
Kernel Mode 60%
User Mode 90%
Kernel Mode 10%

即HackShield使用了更多的底层尤其是核心驱动技术,带来的后果就是兼容性下降,HackShield在Windows 2003上无法启动.HackShield Pro的改进在于降低了内核技术的比例,并增加了服务端的检测内容.

外挂程序破解韩国反外挂产品的技术策略
对于外挂开发者,Game Guard和HackShield都构造了一层破解起来相当困难的保护外壳.相对而言,脱机外挂的开发者的任务更单纯一些,不需要破解保护层,只要模拟与服务端的验证通讯,如果验证通讯涉及客户端的代码特征,加载一个内存DMP文件就够了,因为这种验证与游戏过程没有关联,即去掉这种验证,游戏也能不受影响地进行下去.
对于非脱机外挂,或称内挂的开发者,则需要破解保护层,但这种破解基本是一次性的任务,一点突破,全局皆破,而且快速更新的可能性很小.因为本身使用的就是非常底层的内核驱动技术,被突破以后,再深入就只有更换系统内核或使用硬件了.反外挂系统使用内核驱动,外挂同样也可以使用,至少在分析破解时可以用来发现反外挂系统的漏洞和验证算法.

Game Guard和HackShield都做了一些进程隐藏的保护,不让常见的破解工具发现和分析相关的进程和模块,但是这种方式对于使用更深技术的工具是无效的.IceSword就可以有效地发现游戏客户端进程并枚举和分析进程中的反外挂模块,还可以列出反外挂系统注册的驱动程序.

一个简单的例子:Game Guard和HackShield都采用拦截SendInput API的方式来防御键盘和鼠标模拟,下面是Game Guard和HackShield对SendInput的Hook方式:
Game Guard:
原有代码(Windows 2003 Server)
77E322B8 > B8 F4110000 MOV EAX,11F4
77E322BD BA 0003FE7F MOV EDX,7FFE0300
77E322C2 FF12 CALL DWORD PTR DS:[EDX]
77E322C4 C2 0C00 RETN 0C
77E322C7 E8 E6ABFFFF CALL USER32.77E2CEB2
77E322CC E9 86040000 JMP USER32.77E32757
Game Guard启动以后的代码
77E322B8 > E9 3323A7CD JMP npggNT.458A45F0
77E322BD BA 0003FE7F MOV EDX,7FFE0300
77E322C2 E9 1926A7CD JMP npggNT.458A48E0
77E322C7 E8 E6ABFFFF CALL USER32.77E2CEB2
77E322CC E9 86040000 JMP USER32.77E32757

HackShield:
原有代码(Windows 2000 Server)
77E47E9B > B8 E1110000 MOV EAX,11E1
77E47EA0 8D5424 04 LEA EDX,DWORD PTR SS:[ESP+4]
77E47EA4 CD 2E INT 2E
77E47EA6 C2 0C00 RETN 0C
HackShield启动以后的代码
77E47E9B > FF25 1E00235F JMP DWORD PTR DS:[5F23001E]
77E47EA1 54 PUSH ESP
77E47EA2 24 04 AND AL,4
77E47EA4 CD 2E INT 2E
77E47EA6 C2 0C00 RETN 0C
DS:[5F23001E]为一个间接跳转地址5F220F5A
5F220F5A 57 PUSH EDI
5F220F5B 52 PUSH EDX
5F220F5C 51 PUSH ECX
5F220F5D 50 PUSH EAX
5F220F5E BF 0A00225F MOV EDI,5F22000A
5F220F63 8B5424 10 MOV EDX,DWORD PTR SS:[ESP+10]
5F220F67 B9 18010000 MOV ECX,118
5F220F6C 31C0 XOR EAX,EAX
5F220F6E F0:0FB157 01 LOCK CMPXCHG DWORD PTR DS:[EDI+1],EDX
5F220F73 74 09 JE SHORT 5F220F7E
5F220F75 83C7 0E ADD EDI,0E
5F220F78 31C0 XOR EAX,EAX
5F220F7A ^ E2 F2 LOOPD SHORT 5F220F6E
5F220F7C EB 04 JMP SHORT 5F220F82
5F220F7E 897C24 10 MOV DWORD PTR SS:[ESP+10],EDI
5F220F82 58 POP EAX
5F220F83 59 POP ECX
5F220F84 5A POP EDX
5F220F85 5F POP EDI
5F220F86 - E9 6507DEB0 JMP EGRNAPX2.100016F0

因此,对于需要发送模拟输入事件的外挂程序,只需要在反外挂系统前启动并保存SendInput的前16个字节,然后在调用SendInput前恢复正常的API,调用结束再覆盖回去避免被发现.而对于新版的按键精灵和简单游之类的外挂,由于使用WinIO.sys在驱动层直接发送输入事件,拦截SendInput没有任何意义,只要这些模拟类外挂不被Game Guard和HackShield的特征码识别发现即可.

客观地讲,Game Guard和HackShield对通用外挂工具和简单的模拟类辅助工具的防护应该是有一定效果,因为这些外挂不会带来大的收益,因此其制作者也不会有太多的投入,更新不会很频繁.但对于能够实现全自动挂机的高级内挂和脱机外挂,由于其潜在商业利益的驱使,外挂制作者会尝试各种手段以破解反外挂系统.


_V_ 2007-03-27
  • 打赏
  • 举报
回复
韩国反外挂产品分析报告

目录
文档目的
分析市场上韩国反外挂产品的机理,明确其优缺点
评估韩国反外挂系统在中国网络游戏市场可行性
总结成熟反外挂产品的必备特点
文档目标读者
研发中心
游戏开发商
游戏运营商
韩国反外挂产品的基本情况


随着网络游戏产业的发展,外挂产业也随之诞生并得到飞速的发展,外挂技术不断升级,对网络游戏的威胁也在不断加剧.大陆主流的网络游戏,尤其是MMORPG,基本上都是从韩国引进运营.因此从2002年开始,在韩国游戏开发商逐步认识到外挂对网络游戏的危害,感受到中国大陆外挂制作者高超的技术实力的同时,韩国的网络安全技术公司也意识到反外挂将伴随网络游戏产业的持续发展,成为一个极具潜力的新兴产业,尤其是在外挂危害最深的大陆市场.因此,韩国将原来用于电子商务,网络通讯,病毒防护等领域的软件安全技术移植到网络游戏,开发了几款网络游戏反外挂系统,比较有名的是INCA公司的Game Guard和安博士研究所的AhnLab HackShield.

奇迹在2003年下半年开始使用Game Guard反外挂系统,陆续使用Game Guard的游戏有希望Online,天堂2等等.Game Guard在与奇迹合作的早期(2003年底),确实达到了遏制外挂的目的.但是很快,随着外挂制作者对Game Guard技术的了解不断深入,同时由于该技术本身固有的一些弱点,一些外挂已经完全突破了Game Guard对网络游戏的防护,神话外挂就已经能够绕过Game Guard直接启动奇迹游戏客户端.Game Guard在吸取了奇迹上的教训以后在保护机制,验证机制等方面有了很多的改进,但是后来的希望Online等游戏尽管使用了Game Guard,各种外挂,尤其脱机外挂仍然层出不穷,无法遏止,主要原因就是外挂制作者已经熟悉了Game Guard所使用的核心技术,并积累了破解的经验,因此不触动实现理念和核心机制的小修小补无济于事.

AhnLab HackShield出现较晚,在国内的应用也比较少,目前使用安博士的只有天联世纪的街头篮球.尽管在大陆的应用时间不长,并不为人所了解,但是由于其核心机制和Game Guard基本一致,很快也出现了脱机外挂,比如街头篮球战神.
韩国的反外挂产品在大陆应用的多次失败,已经能够说明很多问题.且不论其实现机制和使用的技术是否优秀,其系统的基本理念就有明显的缺陷.这些产品在韩国本土的成功运用并不能证明其在大陆也能够成功,只能说明在韩国本土,由于政策的限制,用户的习惯以及黑客文化的缺乏,没有形成像大陆这样蓬勃发展的游戏外挂产业.


韩国反外挂产品的技术特点和内在缺陷

韩国的反外挂产品,由于其源自于电子商务,网络通讯,病毒防护等领域的已有技术,不可避免地带有原有技术的明显特征,比如依赖于系统底层技术的目标进程保护,类似于病毒扫描的特征码识别等等.这些手段对付木马和病毒应该是有效的,但对于游戏外挂,则存在一些内在的缺陷:
外挂程序在用户的系统中拥有和反外挂程序同样的控制权限,因此依赖于系统底层技术,就是在与外挂制作者较量谁能够最终控制系统,过多地使用底层技术还会带来兼容性问题.由于外挂用户不是被动的受害者,而是主动的使用者,因此外挂在优先权上更有优势,比如用户会根据外挂的使用说明,严格地按步骤操作,甚至会按外挂的要求安装新的操作系统.

外挂与病毒和木马有完全不同的目的和代码特征,而且在利益的驱动下,外挂的变形能力和更新能力远高于病毒和木马,因此基于特征码识别的技术很难取得明显的效果,金山游盾就是最好的例证.

韩国反外挂产品更多地是在操作系统层面与游戏客户端绑定,与游戏过程本身的关联很弱,只要能够找到黑客高手成功的从系统层面剥离反外挂系统,外挂程序就可以随意使用;这种剥离基本上只需要做一次,因为底层机制的更新是很困难的.
韩国反外挂产品的设计思路是阻止外挂侵害客户端,着眼于对游戏客户端进程的保护,对于不依赖于客户端存在的脱机外挂,这些保护完全没有意义,脱机外挂需要做的只是模拟反外挂模块与反外挂服务端的简单验证通讯,而网络游戏最大的敌人就是对游戏平衡性具有最强破坏力的脱机外挂;
韩国反外挂产品寄希望于一劳永逸地解决外挂问题,过多的底层技术应用使其无法快速更新以应对层出不穷的外挂技术.
韩国反外挂产品的技术实现机理

下面是我们对Game Guard和HackShield这两种反外挂产品所实现的功能及其实现方式的简要分析.这两款产品在实现思路和机制上是基本一致的,仅在实现细节上有少量的差异

Red_angelX 2007-03-27
  • 打赏
  • 举报
回复
第3个最可行
dovelee 2007-03-27
  • 打赏
  • 举报
回复
jf

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧