当前位置:早雪网网络学院编程文档游戏开发 → 防外挂系列

防外挂系列

减小字体 增大字体 作者:未知  来源:从互联网收集整理并转载  发布时间:2005-3-8 1:16:18

可能有点长,大家耐心点看完,呵呵。

《老子看不惯外挂系列 之 彻底粉碎钩子型外挂》

现在大部分的主流外挂,包括按键精灵,自动做一些动作之类的外挂。
都是通过HOOK进游戏窗口,并且用不同的HOOK类型来完成的,比如对于
网络,通常是通过HOOK消息,把DLL弄到我们的游戏程序中,然后通过
GetProcAddress得到DLL中它们卑劣的函数的地址和真实的函数地址,
然后通过WriteProcessMemory来把我们的函数地址改成他们他们的API
地址。

那么在我们的游戏执行的时候,收到消息就会先触发他们的钩子,等
他们布置好邪恶的陷阱,然后再执行我们的程序。那么,对于这类型
的外挂,该怎么防呢?俗话说得好,以彼之道,还制彼身。所谓魔高
一尺,道高一丈。所谓邪不胜正。所谓天网恢恢。所谓做贼心虚。

恩,WINDOWS的钩子有个特点,就是钩子链,因为对于同一个进程,即
使是同一类型的钩子,能同时有多个,也就是说,对于同一个游戏,开
两个功能相同的外挂也可以。那么,怎么样来决定钩子的顺序呢?所谓
后来者先得,WINDOWS的做法是,最后一个HOOK某个进程的钩子最先执
行。并且振奋人心的消息是,在钩子里面可以控制下一个钩子是否执行。

这个函数是CallNextHookEx,也就是说,如果在某个钩子里面不执行这
个函数的话,钩子链就会在这中断,那么我们的思路就很简单了,在游
戏运行中,开一个进程,每隔一段时间就hook我们的主程序,然后在钩
子里面,不执行CallNextHookEx,这样就可以避免别人的钩子执行。

所谓,仅仅发现敌人还不够,还要消灭敌人。不急,我们来看看如何彻
底把敌人打成粉碎性骨折。恩,要消灭敌人就要复杂一点了,要针对不
同类型的钩子来采取不同类型的方法了,因为敌人的钩子不管怎么做,
无非是出于两种目的,一种是修改数据,另外就是过滤数据。其核心思
想就是我们自己的游戏注册两个钩子,一个总是在钩子链的最底层,另
外一个总是在钩子链的最上层,一比较两个钩子收到的


Tags:外挂,系列
[数据载入中...] [返回上一页] [打 印]