PE:调试目录中的奇怪条目(类型:0xc)

逆向工程 聚乙烯 二进制格式 调试符号
2021-06-21 11:44:45

Microsoft 在此处描述了 IMAGE_DEBUG_DIRECTORY 结构

我在这里了解到,对于最近的 VisualStudio 编译的二进制文件,类型是IMAGE_DEBUG_TYPE_CODEVIEW,即值是0x2.

现在我有一个 vanilla VS-2015 编译的二进制文件,我正在使用 Python 模块pefile来迭代IMAGAE_DEBUG_DIRECTORY对象:

for debug_data_object in pe.DIRECTORY_ENTRY_DEBUG:
    ...

第一个条目是预期的:

0x6500     0x0   Characteristics:               0x0       
0x6504     0x4   TimeDateStamp:                 0x59088504 [Tue May 02 13:09:24 2017 UTC]
0x6508     0x8   MajorVersion:                  0x0       
0x650A     0xA   MinorVersion:                  0x0       
0x650C     0xC   Type:                          0x2       
0x6510     0x10  SizeOfData:                    0x88      
0x6514     0x14  AddressOfRawData:              0x176DC   
0x6518     0x18  PointerToRawData:              0x66DC

但还有第二个。它的类型是 0xC :

0x651C     0x0   Characteristics:               0x0       
0x6520     0x4   TimeDateStamp:                 0x59088504 [Tue May 02 13:09:24 2017 UTC]
0x6524     0x8   MajorVersion:                  0x0       
0x6526     0xA   MinorVersion:                  0x0       
0x6528     0xC   Type:                          0xC       
0x652C     0x10  SizeOfData:                    0x14      
0x6530     0x14  AddressOfRawData:              0x17764   
0x6534     0x18  PointerToRawData:              0x6764 

这第二个条目是关于什么的?为什么会在那里?类型0xc对应什么?



更新

除了下面的答案之外,这篇SO 帖子还包含其他详细信息。

1个回答

如果您winnt.h从最新的 Windows 10 SDK 中检查,您可以在那里找到其余的值:

#define IMAGE_DEBUG_TYPE_UNKNOWN          0
#define IMAGE_DEBUG_TYPE_COFF             1
#define IMAGE_DEBUG_TYPE_CODEVIEW         2
#define IMAGE_DEBUG_TYPE_FPO              3
#define IMAGE_DEBUG_TYPE_MISC             4
#define IMAGE_DEBUG_TYPE_EXCEPTION        5
#define IMAGE_DEBUG_TYPE_FIXUP            6
#define IMAGE_DEBUG_TYPE_OMAP_TO_SRC      7
#define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC    8
#define IMAGE_DEBUG_TYPE_BORLAND          9
#define IMAGE_DEBUG_TYPE_RESERVED10       10
#define IMAGE_DEBUG_TYPE_CLSID            11
#define IMAGE_DEBUG_TYPE_VC_FEATURE       12
#define IMAGE_DEBUG_TYPE_POGO             13
#define IMAGE_DEBUG_TYPE_ILTCG            14
#define IMAGE_DEBUG_TYPE_MPX              15
#define IMAGE_DEBUG_TYPE_REPRO            16

所以0xCIMAGE_DEBUG_TYPE_VC_FEATURE似乎没有太多关于它存储在那里的信息的信息,但您可以进行一些搜索以获得一些想法。