代码之家  ›  专栏  ›  技术社区  ›  inazaruk

如何检测给定的PE文件(exe或dll)是64位还是32位

  •  8
  • inazaruk  · 技术社区  · 17 年前

    目前,我只有一个解决方案:从指定文件中读取PE Header,并从中获取“Machine”字段。

    (规格: Microsoft Portable Executable and Common Object File Format Specification (.docx文件)见“3.3。COFF文件头(对象和图像)”)

    此字段最多可包含约20个值。其中三个是:

    IMAGE_FILE_MACHINE_I386  ( == 32bit )
    
    IMAGE_FILE_MACHINE_IA64  ( == 64bit )
    
    IMAGE_FILE_MACHINE_AMD64 ( == 64bit )
    

    我的问题:

    1) “机器”到比特映射正确吗?还是我错过了什么?还有其他注意事项吗?

    2 回复  |  直到 14 年前
        1
  •  17
  •   Draemon    17 年前

    GetBinaryType(...) 回报 SCS_32BIT_BINARY 适用于基于Windows的32位应用程序 和 SCS_64BIT_BINARY 对于基于64位Windows的应用程序。

    推荐文章