首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定Windows 10上可执行二进制文件的体系结构

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

Stack Overflow用户
提问于 2019-02-22 20:52:29
回答 3查看 10.3K关注 0票数 9

在Windows上给出一些Random.exe,我如何确定

  1. 它的CPU架构,如Intel/ARM,和
  2. 苦涩(如32或64 )

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-02-22 20:59:57

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

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

您可以看到PE结构这里。这里列出了有效的机器字段值。

编辑:这里有一个C代码,可以这样做,未经测试:

代码语言:javascript
复制
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);
}
票数 9
EN

Stack Overflow用户

发布于 2019-02-22 21:05:06

file foo.exe将根据文件格式、神奇数字/元数据识别文件内容。(不是他们的文件名)。大概也可以从MinGW中的源代码中获得或安装,并且可能附带任何用于MS的Linux Windows子系统,WSL的发行版。

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

(指挥)显示了示例输出。我的Linux桌面上有几个Windows可执行文件:

代码语言:javascript
复制
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

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

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

对于纯文本格式,有时可以使用启发式方法区分HTML和纯文本,并识别UTF-8与UTF-16与ISO-8851与普通ASCII,DOS与Unix行尾等等。

票数 8
EN

Stack Overflow用户

发布于 2020-10-13 13:38:32

用JavaScript实现这一点的一个非常简单的方法是:https://github.com/doctolib/windows-binary-architecture

代码语言:javascript
复制
getTargetArch(yourFilePath, (err, archName, archCode) => {
  // you can check arch name here
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54834984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档