可能有点长,大家耐心点看完,呵呵.
现在大部分的主流外挂,包括按键精灵,自动做一些动作之类的外挂. 【程序编程相关:Asp及Web开发中的常见问题.】
«老子看不惯外挂系列 之 彻底粉碎钩子型外挂» 【推荐阅读:用java读写ini配置文件】
网络,通常是通过hook消息,把dll弄到我们的游戏程序中,然后通过 【扩展信息:PHP学习日记】都是通过hook进游戏窗口,并且用不同的hook类型来完成的,比如对于 getprocaddress得到dll中它们卑劣的函数的地址与真实的函数地址, 然后通过writeprocessmemory来把我们的函数地址改成他们他们的api 地址.那么在我们的游戏执行的时候,收到消息就会先触发他们的钩子,等
他们布置好邪恶的陷阱,然后再执行我们的程序.那么,对于这类型 的外挂,该怎么防呢?俗话说得好,以彼之道,还制彼身.所谓魔高 一尺,道高一丈.所谓邪不胜正.所谓天网恢恢.所谓做贼心虚.恩,windows的钩子有个特点,就是钩子链,因为对于同一个进程,即
使是同一类型的钩子,能同时有多个,也就是说,对于同一个游戏,开 两个功能相同的外挂也可以.那么,怎么样来决定钩子的顺序呢?所谓 后来者先得,windows的做法是,最后一个hook某个进程的钩子最先执 行.并且振奋人心的消息是,在钩子里面可以控制下一个钩子是否执行.这个函数是callnexthookex,也就是说,如果在某个钩子里面不执行这
个函数的话,钩子链就会在这中断,那么我们的思路就很简单了,在游 戏运行中,开一个进程,每隔一段时间就hook我们的主程序,然后在钩 子里面,不执行callnexthookex,这样就可以避免别人的钩子执行.所谓,仅仅发现敌人还不够,还要消灭敌人.不急,我们来看看如何彻
底把敌人打成粉碎性骨折.恩,要消灭敌人就要复杂一点了,要针对不 同类型的钩子来采取不同类型的方法了,因为敌人的钩子不管怎么做, 无非是出于两种目的,一种是修改数据,另外就是过滤数据.其核心思 想就是我们自己的游戏注册两个钩子,一个总是在钩子链的最底层,另 外一个总是在钩子链的最上层,一比较两个钩子收到的消息,就知道中 间有没有别的钩子了.... 下一页