|
|
| | 网站首页 | 初级教材 | 中级教程 | 高级教程 | 模块文档1.8 | 资源下载 | 外挂海论坛 | 加入外挂作坊 | | ||
|
||
|
|||||
|
|
|||||
| 04-反APIHOOK | |||||
|
第三节介绍了全局钩子+APIHOOK进行对其它进程的监控,凡事有了矛必然也会出现盾。在目前的游戏里,外挂与反外挂的技术斗争也越来越激烈,需要知已知彼才能百战百胜。
所以本节要介绍如何反APIHOOK的原理与实现。 自从劲舞团这个网络游戏更新为1.75版,使用了韩国安博士反外挂功能后,一时之间愁住了不少的外挂开发新手,之前大量的劲舞团按键精灵脚本也全都失去了作用。
其实劲舞团使用了驱动拦截进程的创建,为每个进程都加入一个DLL文件。这个DLL里会对当前进程中大量的关健API进行HOOK处理。一旦发现该进程调用的API有危害及劲舞团的进程时就会进行过滤处理。原理上与上节的全局钩子+APIHOOK实现的进程保护差不多。
也就是说劲舞团反外挂是通过APIHOOK实现过滤我们对一些特殊的关健API调用。 为了能实现反APIHOOK功能,我们有必要对APIHOOK这个实现原理有由了解
什么是APIHOOK? 通过某些手段能够控制住目标进程对某些API功能的调用,我们称为APIHOOK
APIHOOK有哪些方式? 常见的HOOK API调用的实现方式有两种。 一种是找到该API在内存的入口地址,修改其入口前八字节数据为了一汇编的 jmp xxxxxxxx 无条件跳转指令,使其调用该API时会跳到指定的另一处函数入口处,即与这个API有着相同的参数与返回值的回调处理程序
第二种是在进程的输入表(IAT表)找到保存在这里的要调用的那个API地址,修改这个地址,使程序在输入表里找该API地址时取的是我们修改后的回调程序入口地址。
上面的两种方式,其实第二种不必去考滤,因为程序要调用某个API可以不通过输入表。第一种修改入口前八字节才是最重要的,因为只要程序要调用这个API,必然得从它的入口地址进入。
下面我们的代码就是解决第一种的APIHOOK功能,让他不能监控到我们对API的调用 这里,我们使用第二节的 调用API.e 这个例子进行修改修改,使其有反APIHOOK的作用,通过修改后的程序,将能在劲舞团里取颜色
看上面的对码,相对于第二节的代码里增加了一些读写内存,在进程创建时就先把一些关健的将要使用的API入口处八字节数据读出保存,然后在每次要调用这些API时,把这原保存的八字节数据都写回去。这样一来,游戏对我们的API入口处拦截就失败了。
但有一点需要注意的,我们的程序必需得在游戏之前运行才可以。如果游戏以我们之前已经运行了的话,就晚了,那时你保存下来的八字节数据早就被游戏动过手脚了的。而且,对于这种被修改过的数据你保存下来后,若该游戏结束运行了时,你还去恢复API入口并调用这些API的话,会出现非法操作的。
基于上面的原因,所以反APIHOOK一般只用于自已的EXE程序里,在钩子DLL中用到的机会不多。
由于反APIHOOK的实现需要精通于API的组合调用,所以新手在自已做这种功能时可能不太如意,达不到想要的效果。 外挂作坊1.8第三版模块内置了一些反APIHOOK机制。只要直接调用模块里的取坐标颜色等功能即可。 下版模块会把反APIHOOK分离出为,给用户进行可选择性使用
上面的代码是调用模块里的功能,因为外挂作坊模块1.8版内置了反APIHOOK机制,所以用户不需要再自已动手写反APIHOOK的功能
|
|||||
| 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
|
|||||||||||
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|