API拦截之Detours

Detours是一个字x86机器上拦截任意Win32二进制函数的库。拦截代码在运行时动态的注入。Detours使用用户提供的拦截函数将一个无条件跳转指令替换目标函数起始的少数指令。拦截代码将目标函数替换为跳板函数。跳板函数的地址被放在目标函数指针中。拦截函数能够替换目标函数,也可以在跳板函数中通过目标函数指针作为子调用来执行目标函数,从而扩展目标函数的语义。

Detours在执行的时候被插入。目标函数的代码在内存中被修改,而不是磁盘,因此使其在一个非常精细的粒度中拦截二进制函数。例如,一个可执行程序中的某个DLL中的处理过程被拦截,而同时在其它的可执行程序中的这个DLL中的这个处理过程不会被拦截。不像DLL重链接或静态定向,Detours库中的拦截技术,不论函数是在应用程序中还是系统中,都可以有保障的定位目标函数。

除了基本的拦截功能外,Detours也包含编辑任何库的DLL导入表、附加任意的数据节到已经存在的二进制程序以及为为新进程加载一个DLL的功能。一旦被加载到进程中,被加载的DLL可以拦截这个进程中的任何函数,无论是应用程序库还是像Windows API这样的系统库函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值