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函数被执行,程序将按照1→2→3,即Traget→Detour→Trampoline的顺序执行,最后再回到Target函数的执行过程。

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

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

图6-12  Detours Hook引擎概要设计

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

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

电子工业出版社出版

最新文章

  1. 消除switch语句以获得更好的代码结构
  2. break、continue、return的区别
  3. 著名风投Greylock扩展基金局限 投资科技行业
  4. java中输入的程序_Java中输入的用法
  5. Spring Framework--Data Access(1)--Transaction Management(2) - 声明式事务管理
  6. linux信号(二)--unix环境高级编程读书笔记
  7. 2019年PAT甲级冬季考试真题及参考答案
  8. ArcView Image Analyst v1.0.rar
  9. D. Bash and a Tough Math Puzzle
  10. java Complex 类
  11. 线上nginx偶尔出现502错误
  12. python可以不对变量初始化_Python 可以不对变量如 a 初始化就可在表达式如 b=a+1 中使用该变量。...
  13. WCF 会话服务 Session
  14. 菜鸟爬取中关村手机详情页参数及报价
  15. Android基础入门教程——1.7 界面原型设计
  16. 弹性容器----六大属性(5、项目在交叉轴上的对齐方式)
  17. 换位思考:大学教育我之见
  18. 互联网快讯:极米优质产品助力大屏观影;中兴手机官宣吴京为全新代言人
  19. (附源码)计算机毕业设计SSM智能导诊系统
  20. [JavaScript]_[初级]_[关于forof或者for...of循环语句的用法]

热门文章

  1. 原生js之同级元素添加移除class
  2. ECMAscript6入门(1)
  3. checkbox选中与取消选择
  4. java对获取的字节数组进行处理
  5. C++中的命名空间(namespace)介绍
  6. 多线程,多进程使用场景
  7. python_求1-2+3-4+......-100的值
  8. 【网络流+线段树】[CQBZOJ3065]生死游戏((A+B)^2 Problem)
  9. 五款app原型设计工具对比
  10. 美国ADP就业数据是什么?与非农有何关系