gpt4 book ai didi

c - osx下二进制文件的文件格式

转载 作者:太空宇宙 更新时间:2023-11-04 02:58:52 25 4
gpt4 key购买 nike

我正在尝试读取 osx 10.7.4 下某些可执行文件的 mach header。在许多情况下, header 魔术字段不等于 MH_MAGIC 所以我猜这些二进制文件使用不同的格式?所以问题是什么文件格式用于 MAC osx 下的可执行文件?

 int main(int argc, char** argv) {
char* path = getenv("PATH");
char* token = strtok(path, ":");
char filename[260];
DIR* pdir = NULL;
dirent* pentry = NULL;
FILE* fin = NULL;
mach_header header;
// loop through each directory set in path
while(token) {
// try to open directory
pdir = opendir(token);
if(pdir) {
// read entry from directory
while((pentry = readdir(pdir))) {
// check so it's a regular file
if(pentry->d_type == DT_REG) {
sprintf(filename, "%s/%s", token, pentry->d_name);
// try to open file and read mach header
fin = fopen(filename, "r");
if(fin) {
fread(&header, sizeof(header), 1, fin);
if(header.magic == MH_MAGIC) {
printf("%s has a mach-o header\n", filename);
}
fclose(fin);
}
}
}
closedir(pdir);
}
token = strtok(NULL, ":");
}
return 0;
}

最佳答案

除了 Mach-O 二进制文件本身之外,还有 Fat Binaries,其中包含用于支持通用二进制文件的多个体系结构。它们有不同的魔数(Magic Number)。据我所知,Mach-O 目前正在使用以下魔数(Magic Number)(来 self 自己的代码):

const uint8_t magic1[4] = { 0xce, 0xfa, 0xed, 0xfe };   // 32-bit
const uint8_t magic2[4] = { 0xca, 0xfe, 0xba, 0xbe }; // Universal
const uint8_t magic3[4] = { 0xcf, 0xfa, 0xed, 0xfe }; // 64-bit

关于c - osx下二进制文件的文件格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14353696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com