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直接复制到目标进程中。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗