Detours是微软开发的一款强大的工具库,主要用于动态地拦截和修改Windows系统中的API调用,无需原始源代码。这个库的使用广泛,特别是在系统监控、调试、插件开发和安全研究等领域。Detours通过在目标函数(Target Function)的入口处插入跳跃指令,将调用重定向到自定义的Detour函数,而后再通过Trampoline函数恢复原始函数的行为。 Detours的核心原理在于对Windows进程内存的管理和API拦截。Windows NT系统为每个进程提供了4GB的虚拟内存空间,其中包含了程序的执行指令。Detours利用QueryProtectEx等API可以修改页面权限,使得运行中的程序代码变得可读写可执行。这样,Detours就能安全地在目标函数前插入新的机器码,实现函数拦截。 拦截WIN32 API的原理是,Detours首先创建一个Trampoline函数,这是目标函数的一个副本,保留原始功能。接着,它在目标函数的入口处插入一条JMP指令,将调用跳转到Detour函数。当Detour函数执行完毕,Trampoline函数会通过跳转指令继续执行目标函数的剩余代码,保持原有的行为。 为了在已运行的进程中注入代码或加载DLL,Detools可以创建新的线程,并利用CreateRemoteThread API在目标进程中执行。创建一个只包含LoadLibrary调用的ThreadFunction,然后在目标进程的内存中分配一块区域,写入ThreadFunction的机器码,最后创建远程线程执行这段代码,从而达到装入DLL的目的。 Detours库函数的使用包括但不限于以下接口: 1. DetourFindFunction:这个函数用于找到指定DLL中函数的入口地址,输入参数是DLL名和函数名,返回函数的实际地址。 2. DetourAttach:用于将Detour函数附加到目标函数,实现拦截。 3. DetourDetach:用于解除Detour,恢复目标函数的原始行为。 4. DetourTransactionBegin/End:这两个函数用于开始和结束一个Detours的事务,确保在修改过程中系统的稳定。 5. DetourCopyInstruction/RestoreInstructions:这些函数用于复制和恢复目标函数的指令,确保Trampoline函数的正确生成和使用。 通过这些库函数,开发者可以在不修改原始代码的情况下,实现对系统行为的深度定制,例如,可以用来增强安全控制,监控系统活动,或者实现特定的插件机制。在实际应用中,开发者需要根据自己的需求选择合适的Detour函数,并理解其工作原理,以便有效地实现代码拦截和行为修改。不过,由于Detours涉及到对运行时代码的直接修改,因此需要谨慎使用,以免引发不可预见的问题或安全风险。
- 粉丝: 0
- 资源: 6
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 自动办公-51 Excel-案例-把文件夹整理到Excel中.zip
- 自动办公-52 Excel-案例-用Excel画画.zip
- 在Word表格中将上下行相同内容的单元格自动合并.zip
- C语言《基于 STM32G0 的带 USB C 供电的锂电池充电器》+项目源码+文档说明
- (源码)基于JavaFX和Portainer的Docker管理系统.zip
- 钢材表面缺陷数据集.zip,2624张图片,Python
- (源码)基于Python的物联网和个人安全警报系统.zip
- 精选微信小程序源码:滴滴拼车小程序(含源码+源码导入视频教程&文档教程,亲测可用)
- (源码)基于Android的智能学习管理系统.zip
- 精选微信小程序源码:汤总便利小程序(门店店铺类)小程序(含源码+源码导入视频教程&文档教程,亲测可用)