检测PE FIles中的无效资源部分

时间:2018-06-05 17:50:25

标签: windows x86 disassembly portable-executable

我正在尝试使用PE文件中的资源执行某些计算。为此,我按照以下步骤操作:

  1. 从标题

    获取资源部分的RVA

    PEHeader.DataDirectory [IMAGE_DIRECTORY_ENTRY_RESOURCE] .VirtualAddress

  2. 将上述RVA转换为文件偏移

  3. 到达资源部分的开头并遍历资源树

  4. 到达树叶(实际资源)并进行计算。

  5. 当我处理具有有效资源部分的正确PE文件但上面的步骤工作正常但我无法处理以下情况:

    • 资源部分的RVA存在于DataDirectory中,但是实际的" .rsrc"部分缺失
    • " .rsrc"部分存在但没有部分标题
    • " .rsrc" section存在但它的头部在PointerToRawData或SizeOfRawData字段中都有垃圾值。
    • 在遍历资源树的过程中,我在OffsetToData / OffsetToDirectory等字段中遇到垃圾值

    遇到上述情况时,我的代码会因ACCESS_VIOLATION_EXCEPTIONS崩溃或产生不一致的结果。

    我的问题是,除了检查NULL指针/值之外,当资源节标题和指针指向/包含垃圾时,如何处理上述情况。

0 个答案:

没有答案