网站公告列表     加入外挂作坊终生会员200元,获取最新外挂作坊模块与加入会员群  [admin  2007年8月3日]        
您现在的位置: 外挂作坊 >> 第七章 中级进阶 >> 文章正文
  04-反APIHOOK         ★★★ 【字体:

 

  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 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
           
    客服QQ:147422159 技术QQ:42724920 浙ICP备06023406号 近期项目多,在线时间不定,有事请QQ留言 Copyright © 2006 www.zuowg.com Inc. All rights reserved.外挂作坊.版权所有 站长:外挂作坊