DetoursHook

DetoursHook

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

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

Detours Hook的3个关键概念

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

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

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

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

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

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

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

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

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

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

 

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

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

6-12  Detours Hook引擎概要设计

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

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

电子工业出版社出版

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值