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 @ 2020-12-19 20:45  非法关键字  阅读(561)  评论(0)    收藏  举报