我正在尝试将文件的内容读入结构中。该结构如下所示:
typedef struct{
unsigned char e_ident[EI_NIDENT] ;
Elf32_Half e_type;
Elf32_Half e_machine;
Elf32_Word e_version;
Elf32_Addr e_entry;
Elf32_Off e_phoff;
Elf32_Off e_shoff;
Elf32_Word e_flags;
Elf32_Half e_ehsize;
Elf32_Half e_phentsize;
Elf32_Half e_phnum;
Elf32_Half e_shentsize;
Elf32_Half e_shnum;
Elf32_Half e_shstrndx;
} Elf32_Ehdr;
extern Elf32_Ehdr elfH;
Run Code Online (Sandbox Code Playgroud)
它基本上是一个ELF头文件。所以,无论如何我想将文件的内容加载到这个结构中。
该函数看起来像这样。
Elf32_Ehdr elfH;
int load(char* fname){
FILE* file = fopen(fname,"r");
if(NULL == file) return 0;
fread(&elfH, 1, 52, file);
fclose(file);
return 1;
}
Run Code Online (Sandbox Code Playgroud)
因为它似乎无法正常工作。elfH 的内容不符合预期。可能是什么问题?我是不是该
您必须"b"
在文件访问模式字符串 ( "rb"
)中添加fopen
才能执行二进制数据读取。你的硬编码的 elf 头大小也可能不是一个好主意,因为你的 elf 头结构的大小可能不完全是 62。sizeof(Elf32_Ehdr)
这可能是一个更好的方法......
归档时间: |
|
查看次数: |
1226 次 |
最近记录: |