Detours学习3 - 二进制文件编辑

Payloads and Dll Import Editing

除了拦截目标函数的功能外,Detours还包括用于将任意数据段(称为有效载荷)附加到Windows二进制文件、编辑Dll导入表。Detours中的二进制编辑是完全可恢复的;Detours将恢复信息存在在二进制文件中,以便随时可以恢复原始内容。


Format of a Windows PE binary file.


Windows二进制文件的PE格式是COFF(通用对象文件格式)的扩展。Windows二进制文件由DOS兼容头、PE头、程序代码部分、初始化数据的数据部分、导入的Dlls和函数的导入表、导出函数的导出表、调试符号。除了两个头(DOS兼容头、PE头)外,文件的其它部分都是可选的,并且在给定的二进制文件中可能不存在。


Format of a Detours-modified binary file


要修改Windows二进制文件,Detours在导出表区和调试符号区之间创建了一个新的.detours区,如上图所示。请注意,调试符号区必须始终位于Windows二进制文件的末尾。新的.detours区包含一个detour header和原始PE头的副本。如果要修改导入表,Detours会创建新的导入表,将其附加到复制的PE副本中,然后修改原始PE头指向新的导入表。最后,Detours.detours区的末尾写入用户所有的Payloads,并附加调试符号区。从.detorus区恢复原始PE头并删除.detours区,则Detours可以撤消对Widnows二进制文件的修改。

创建一个新的导入表有两个目的。首先,如果需要撤消对Windows二进制文件的所有修改,它将保留原始的导入表。其次,新的导入表可以包含重命名的导入Dll和函数或全新的Dll和函数。作为应用程序导入表中的第一个条目,用户的Dll始终是在应用程序的地址空间中运行的第一个Dll。

Detours提供了如下函数:

Detours还提供了,用于枚举映射到地址空间DetourEnumerateModules中的二进制文件并在这些映射的二进制文件DetourFindPayload中定位 Payload。

每个Payload由一个128位的GUID标识。Payload可用于将每个应用程序的配置数据附加到应用程序二进制文件。

可以使用DetourCopyPayloadToProcess将Payload直接复制到目标进程中。

posted @   非法关键字  阅读(520)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示