如何确定 Windows 10 上可执行二进制文件的体系结构

Jus*_*cle 5 windows cpu-architecture identification portable-executable

鉴于Random.exeWindows 上的一些,我如何确定

  1. 它的 CPU 架构,例如 Intel/ARM,以及
  2. 它的位数,例如 32 或 64。

我可以使用文件资源管理器、其他工具或编程方法中的属性吗?

Pet*_*des 12

Cygwin file foo.exe将根据文件格式幻数/元数据识别文件内容。(不是他们的文件名)。大概也可以从MinGW 的源代码中获取或安装,并且可能随MS 的 Linux Windows 子系统WSL的任何发行版一起提供。

这与大多数 BSD 和所有 Linux 发行版使用的POSIXfile命令的开源实现相同。上游来源是https://www.darwinsys.com/file/

https://en.wikipedia.org/wiki/File_(command)显示示例输出。我的 Linux 桌面上有几个 Windows 可执行文件:

peter@volta:~/.wine/drive_c$ file Program\ Files/Internet\ Explorer/iexplore.exe 
..../iexplore.exe: PE32+ executable (GUI) x86-64, for MS Windows

peter@volta:~/.wine/drive_c$ file Program\ Files\ \(x86\)/The\ Master\ Genealogist\ v9/tmg9.exe 
..../tmg9.exe: PE32 executable (GUI) Intel 80386, for MS Windows
Run Code Online (Sandbox Code Playgroud)

如果您不经常使用命令行 shell(就像我在 Linux 桌面上所做的那样),那么我不知道这是不是最好的答案。


file适用于几乎任何类型的文件,例如 ZIP、JPG、mp4、mkv,对于广泛使用的文件格式,它甚至可以获取一些额外的元数据,例如 JPG 图像分辨率。(它不是基于文件名,而是打开文件来查看元数据。通常前 4 个字节左右是一个“幻数”,指示文件类型。)

对于纯文本格式,它有时可以使用启发式方法来区分 HTML 与纯文本,并识别 UTF-8 与 UTF-16 与 ISO-8851 与纯 ASCII,以及 DOS 与 Unix 行结尾等。相当不错程序可以随身携带,而不仅仅是可执行文件。


ybu*_*ill 7

可执行文件的架构写在 COFF 头的 Machine 字段中。您可以使用十六进制编辑器以编程方式或手动方式检索它:

  • 转到文件中的偏移量 0x3C。那里的四个字节保存 COFF 头的偏移量(从文件的开头)。
  • 转到上述字段指向的 COFF 标头,并前进四 (4) 个字节。
  • 以下两 (2) 个字节是 Machine 字段。

你可以在这里看到 PE 结构。此处列出有效的机器字段值

编辑:这是一个未测试的 C 代码:

int main(int argc, char *argv[]) {
    FILE *f = fopen(argv[1], "rb");
    uint32_t offset = 0;
    fseek(f, 0x3c, SEEK_SET);
    fread(&offset, sizeof(offset), 1, f);
    fseek(f, offset + 4, SEEK_SET);
    uint16_t machine = 0;
    fread(&machine, sizeof(machine), 1, f);
    printf("Machine: 0x%.4x\n", machine);
}
Run Code Online (Sandbox Code Playgroud)


Jus*_*cle 5

转储箱/标题

还将显示 CPU 体系结构和可执行文件的大地址感知状态,该工具随 Visual Studio 一起提供,并提供以下输出:

Microsoft (R) COFF/PE 转储程序版本 14.11.25547.0 版权所有 (C) Microsoft Corporation。版权所有。

文件转储 C:\Users\justins\projects\random.exe

找到 PE 签名

文件类型: 可执行图像

文件头值
            8664 机器 (x64)
               4节数
        5C0BB424 时间日期戳 2018 年 12 月 8 日星期六 04:08:04
               0 指向符号表的文件指针
               0 符号数量
              可选标头的 F0 尺寸
              22个特点
                   可执行文件
                   应用程序可以处理大(>2GB)地址