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

问题描述 投票:3回答:3

鉴于Windows上的一些Random.exe,我该如何判断

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

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

windows cpu-architecture portable-executable identification
3个回答
4
投票

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

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

你可以看到PE结构here。有效的机器字段值列在here中。

编辑:这是一个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);
}

3
投票

Cygwin file foo.exe将根据文件格式魔术数字/元数据识别文件内容。 (不是他们的文件名)。据推测,也可以从MinGW的源代码中获得或安装,并且可能附带有MS's Windows Subsystem for Linux,WSL的任何发行版。

这与大多数BSD和所有Linux发行版使用的the POSIX file command的开源实现相同。上游来源是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

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


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

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


2
投票
dumpbin /headers

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

Microsoft (R) COFF/PE Dumper Version 14.11.25547.0 Copyright (C) Microsoft Corporation.  All rights reserved.

Dump of file C:\Users\justins\projects\random.exe

PE signature found

File Type: EXECUTABLE IMAGE

FILE HEADER VALUES
            8664 machine (x64)
               4 number of sections
        5C0BB424 time date stamp Sat Dec  8 04:08:04 2018
               0 file pointer to symbol table
               0 number of symbols
              F0 size of optional header
              22 characteristics
                   Executable
                   Application can handle large (>2GB) addresses
© www.soinside.com 2019 - 2024. All rights reserved.