PE文件的资源

1.    PE文件的资源是以树形结构存储的。
2.    资源目录:
    typedef struct
    {
        DWORD Characteristics;
        DWORD TimeDateStamp;
        WORD MajorVersion;
        WORD MinorVersion;
        WORD NumberOfNamedEntries;
        WORD NumberOfIdEntries;
    }IMAGE_RESOURCE_DIRECTORY;
    IMAGE_RESOURCE_DIRECTORY_ENTRY DirectoryEntries[];
    >
    DirectoryEntries紧跟在IMAGE_RESOURCE_DIRECTORY之后,
    个数是 = NumberOfNamedEntries + NumberOfIdEntries 。

    typedef struct
    {
        DWORD Name;
        DWORD OffsetToData;
    }IMAGE_RESOURCE_DIRECTORY_ENTRY;
    
    OffsetToData这字段若不是另一个资源目录的偏移位置,就是指向特定资源实体的一个指针。如果最
    高位(0x80000000 )设立,表示这个目录项目指向另一个子目录,而剩余的 31 个位
    元就是另一个 IMAGE_RESOURCE_DIRECTORY 的偏移位置(从resource section 算
    起)。如果最高位没有设立,剩余的 31 个位就是某一个
    IMAGE_RESOURCE_DATA_ENTRY 的偏移位置(从resource section 算起)。
    IMAGE_RESOURCE_DATA_ENTRY 结构内含资源原始资料的位置、大小、以及code
    page 。


    DirectoryEntries[]
    ---------
            ---> 下一个目录 或者是 IMAGE_RESOURCE_DATA_ENTRY
    ---------
    ---------

    typedef struct _IMAGE_RESOURCE_DATA_ENTRY {
    DWORD OffsetToData;
    DWORD Size;
    DWORD CodePage;
    DWORD Reserved;
    } IMAGE_RESOURCE_DATA_ENTRY, *PIMAGE_RESOURCE_DATA_ENTRY;

原文地址:https://www.cnblogs.com/linxr/p/1927005.html