Detours Professional是由微软开发的HOOK库,一般开发者会用到这款工具。拥有两大功能,一是拦截x86机器上的任意的win32 API函数;二是插入任意的数据段到PE文件中,修改DDL文件的导入表。软件主要用于实现复杂的Hook操作,达到一般WIN32 API实现不了的一些效果,另外可以编译成lib文件,有需要的不要错过。
软件特色
首先他支持C#语言(此处已超越Detours),拥有C# Wapper
与Detours的收费版本一致的是,支持全部类型的进程
完美支持64位进程以及目标
已经持续更新很久,并且拥有强大的支持。
著名游戏引擎UNREAL在使用该系统,虽然我没注意过在哪里使用过。
支持托管以及非托管级别的代码调用以及HOOK
开放全部源码,可以学习修改,提取甚至静态编译
超级简单的注入远程DLL至对方进程,这点比Detours要简单的多。
强大的接口文档,这个写的非常详细了
驱动级选项,认真读文档会知道他可以选择性的使用驱动程序来提升本身的权限
拥有强大的API可以检测到目标进程或系统进程是否为64位
注入时可针对64位和32位做不同的接口
使用方法
detours是微软开发的一个函数库,专门用于捕获系统API。在使用之前,必须做以下相关准备工作:
1、下载本站提供的detours professional 3.0软件;
2、安装detours,一直NEXT
3、生成detours库,
在安装后的文件夹下找不到直接可以拿来用的LIB文件,但是却有SRC文件(在**\Microsoft Research\Detours Express 2.1\src下)。该文件夹下还有Makefile,可以直接用来生成库。将Detours路径下的SCR文件夹拷贝到**\Microsoft Visual Studio 9.0\VC路径下,注意是整个文件夹(其它版本VC自己照着复制)在system32目录找到cmd右键以管理员身份运行,切换至 c:\Program Files\Microsoft Visual Studio 9.0\VC\bin目录运行vcvars32.bat,切换到\Microsoft Visual Studio9.0\VC\SRC,然后输入..\bin\nmake指令,编译成功后在\Microsoft Visual Studio9.0\VC\Lib文件下就能找到detoured.lib与detours.lib文件了。
detours库可以拦截任意的API调用,拦截代码是在动态运行时加载的。detours替换目标API最前面的几条指令,使其无条件的跳转到用 户提供的拦截函数。被替换的API函数的前几条指令被保存到trampoline 函数(就是内存中一个数据结构)中. trampoline保存了被替换的目标API的前几条指令和一个无条件转移,转移到目标API余下的指令。
当执行到目标API时,直接跳到用户提供的拦截函数中执行,这时拦截函数就可以执行自己的代码了。当然拦截函数可以直接返回,也可以调用 trampoline函数,trampoline函数将调用被拦截的目标API,目标API调用结束后又会放回到拦截函数。下图就是Detours API拦截的逻辑流程: