`

Detours Hook

 
阅读更多

Detours Hook

Detours微软开发的一个函数库,主要用于动态Hook运行中的程序,其具体介绍参见http://research.microsoft.com/en-us/projects/detours/

在游戏或外挂分析中,可以利用Detours库提供的接口来动态Hook任意地址,截获函数调用并输出打印信息。

Detours Hook3个关键概念

要理解Detours Hook,必须先理解Detours中的3个关键概念。

ØTarget函数:即要Hook的目标函数或目标地址。

ØTrampoline函数:即跳板函数,主要负责保存原始Target函数头的若条指令,并加上一个跳转指令以保持对原始Target函数调用的语义完整性。

ØDetour函数:即截获Target函数的调用之后,所要执行的自定义函数。

Detours Hook中,生成Trampoline函数与Target函数之间的关系如图6-10所示。

6-10Trampoline函数与Target函数的关系

从图6-10中可以看出,Trampoline函数是由Target函数头加jmp指令组成的。

Target函数、Detour函数以及Trampoline函数之间的关系如图6-11所示。

6-11Target函数、Detour函数和Trampoline函数间关系

从图6-11中可知,一旦Target函数被执行,程序将按照123,即TragetDetourTrampoline的顺序执行,最后再回到Target函数的执行过程。

Detours Hook引擎

Detours Hook引擎采用上面介绍的Detours Hook机制,经过精心的设计,使这个Hook引擎支持动态Hook几乎任意地址,以方便管理,而不用为了Hook一个地址去增加代码以及重新编译代码(注意:这里的“任意地址”在可以被修改的地址区域内)。

首先还是让我们看看如图6-12所示的这个引擎的概要设计,然后再详细介绍一下每一块的具体内容。

6-12Detours Hook引擎概要设计

如图6-12所示的Detours Hook引擎,从涉及的内存结构上看,主要由4个块组成,分别是JMP块、HOOK_INFO块、Trampoline块和HKC块,而从处理函数上看,主要由DispatchHookProcessHook组成。

具体细节见<<游戏外挂攻防艺术>>6.4节。

电子工业出版社出版

分享到:
评论

相关推荐

    detours hook 完整代码

    Detours Hook技术是一种在Windows操作系统中进行函数拦截和替换的方法,由Microsoft Research开发。它允许开发者在不修改目标代码的情况下,动态地改变程序的行为。在本文中,我们将深入探讨Detours Hook在64位系统...

    APIHook.rar_Detours hook recv_WindowsAPICodePack.d_apihook.r_de

    这个压缩包文件"APIHook.rar_Detours hook recv_WindowsAPICodePack.d_apihook.r_de"包含了一个使用Detours库来实现API Hook的例子,特别是针对Windows系统中的`recv`函数。下面我们将深入探讨API Hook、Detours库...

    Detours C++ HOOK类库

    "Detours C++ HOOK类库" 是一个用于在Windows平台上进行函数钩子技术实现的高级工具集。这个库由微软开发,版本为3.0,同时也包含了列宁(可能是社区开发者)的一个改进版本。Detours库使得程序员能够便捷地拦截和...

    APIHook(detours)

    在本文中,我们将深入探讨API Hook的概念,以及Detours库在实现API Hook中的作用。 API Hook的基本原理是通过替换API的入口点,使得在实际调用API之前或之后,可以执行自定义的函数或代码片段。这种技术广泛应用于...

    分享一个大神的hook示例,理论上能Hook任意地址和获取寄存器数据

    我们将主要探讨两个关键库:Detours库以及Hook的基本原理。 首先,我们要理解什么是Hook。简单来说,Hook就是在程序执行过程中,通过插入一段代码(钩子)来改变原有功能的行为。当被Hook的函数或API被调用时,这段...

    服务器文件监控源代码

    这一技术主要基于Detours库的Hook机制,通过Hook `SHFileOperation` 函数来实现。`SHFileOperation` 是Windows API中一个重要的函数,它负责处理各种文件操作,如复制、移动、删除和重命名等。 Detours是微软研究...

    HDHook(附源码)HookAPI改变硬盘串号和MAC地址

    VC++源码 一个使用detours来HookAPI的简单例子 DeviceIoControl获取硬盘串号 GetAdaptersInfo获取MAC Hook这两个API改变获取的硬盘串号和MAC地址 HDHook工程 生成dll GetHDDSN工程 载入生成的dll 获取硬盘串号和MAC...

    精选_基于Detours库HOOK API_源码打包

    这个“精选_基于Detours库HOOK API_源码打包”资源很可能是为了帮助开发者理解和实践Detours库在Hook API方面的应用。 Detours库的核心概念是通过“Detour”函数,将原本调用目标函数的代码替换为一个“钩子”函数...

    Detours 3.0 微软api hook库帮助文档

    微软的hook支持api hook和指定函数地址hook,操作简单方便,文档中还有例子可供参考。

    APIHOOK拦截指定进程创建新进程

    APIHOOK拦截指定进程创建新进程。@按键精灵。

    Detours-master_detours_hook_

    Detours是微软开发的一个开源库,它为C++程序员提供了一种方便的方式来拦截和修改其他进程中的函数调用,即所谓的“钩子”(hook)技术。Detours库的使用非常广泛,尤其在系统监控、调试工具、以及性能分析等领域。 ...

    谷歌浏览器劫持,使用微软detours。包含进程注入程序(testcpp3)和apihook程序(MSNDetourDLL)

    谷歌浏览器劫持,使用微软detours。包含进程注入程序(testcpp3)和apihook程序(MSNDetourDLL),还包含detours32/64位库。vs2010工程下载即可用。要注意的是,如果是windows64位系统,必须编译64位的程序。

    IFileOperation COM HOOK

    IFileOperation COM HOOK代码实例 WIN7系统在explorer.exe中操作文件都是调用IFileOperation COM接口,因此通用方法HOOK Win32 API 如DeleteFile就失去了作用该实例成功HOOK到了NewItem、RenameItem、RenameItems、...

    HookWindowTextDll-detours-code.rar

    标题中的"HookWindowTextDll-detours-code.rar"表明这是一个关于使用Detours库来实现Hook技术,特别是针对`DrawText`和`SetWindowText` API函数的项目。Detours是Microsoft Research开发的一个强大的工具,它允许...

    Detours 3.0 HOOK库

    Detours 3.0 HOOK库是一个强大的工具集,由微软研究部门开发,主要用于Windows操作系统上的函数拦截和行为修改。这个库允许开发者在不修改原始代码的情况下,对目标程序进行功能扩展或监控,广泛应用于调试、性能...

    强力的API HOOK开发包detours和配置说明

    Detours是Microsoft Research开发的一个强大的动态API Hook工具,它允许开发者拦截和修改系统或应用程序的函数调用。这个工具在Windows平台上广泛应用于调试、性能监控、日志记录、行为更改等场景。Detours通过替换...

    微软detours HookApi模块开源-易语言

    因某些原因要hookapi但是使用模块中apihook程序会崩溃,并且无法hook成功。 发现此方法可以,使用落雪发布的hook。本人只是封装个模块罢了,我觉得我这种方式用起来比较方便。 落雪帖子: ...需要使用黑月编译,并且要...

    Detours微软Hook库

    最新版微软利器Detours微软Hook库,适用于x86-64编程钩子开发,内置汇编

Global site tag (gtag.js) - Google Analytics