在Windows上给出一些Random.exe,我如何确定
文件资源管理器、其他工具或编程方法中是否有我可以使用的属性?
发布于 2019-02-22 20:59:57
可执行文件的体系结构是在COFF头的Machine字段中编写的。您可以使用十六进制编辑器以编程或手动的方式检索它:
编辑:这里有一个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);
}发布于 2019-02-22 21:05:06
file foo.exe将根据文件格式、神奇数字/元数据识别文件内容。(不是他们的文件名)。大概也可以从MinGW中的源代码中获得或安装,并且可能附带任何用于MS的Linux Windows子系统,WSL的发行版。
这是大多数BSD和所有Linux发行版使用的相同的命令开源实现。上游源是https://www.darwinsys.com/file/。
(指挥)显示了示例输出。我的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如果您不经常使用命令行shell (就像我在Linux桌面上所做的那样),那么请检查这是最好的答案。
file适用于几乎所有类型的文件,例如ZIP、JPG、mp4、mkv,对于广泛使用的文件格式,它甚至会获取一些额外的元数据,比如JPG图像分辨率。(它不是基于文件名,而是打开文件查看元数据。通常前4个字节左右是一个“魔术数字”,它指示文件的类型。)
对于纯文本格式,有时可以使用启发式方法区分HTML和纯文本,并识别UTF-8与UTF-16与ISO-8851与普通ASCII,DOS与Unix行尾等等。
发布于 2020-10-13 13:38:32
用JavaScript实现这一点的一个非常简单的方法是:https://github.com/doctolib/windows-binary-architecture
getTargetArch(yourFilePath, (err, archName, archCode) => {
// you can check arch name here
}https://stackoverflow.com/questions/54834984
复制相似问题