0
私はこのガイドに従っています:http://wiki.osdev.org/ELF_Tutorialを処理するelf files
です。指定されたファイルは、(それがあることを示すreadelf
にもかかわらず)正しいELFないことCでのelfファイルを読む正しい方法
しかし、機能bool elf_check_fil
状態、
コード:
:ファイルをロードbool elf_check_file(Elf32_Ehdr *hdr) {
if(!hdr) return false;
if(hdr->e_ident[EI_MAG0] != ELFMAG0) {
ERROR("ELF Header EI_MAG0 incorrect.\n");
return false;
}
if(hdr->e_ident[EI_MAG1] != ELFMAG1) {
ERROR("ELF Header EI_MAG1 incorrect.\n");
return false;
}
if(hdr->e_ident[EI_MAG2] != ELFMAG2) {
ERROR("ELF Header EI_MAG2 incorrect.\n");
return false;
}
if(hdr->e_ident[EI_MAG3] != ELFMAG3) {
ERROR("ELF Header EI_MAG3 incorrect.\n");
return false;
}
return true;
}
FILE* elf = fopen(argv[1], "r"); Elf32_Ehdr *hdr = (Elf32_Ehdr *) elf; elf_check_file(hdr);
gdb
I ch実際にはhdr->e_ident[EI_MAG0]
... hdr->e_ident[EI_MAG3]
には正しいマジックナンバーが含まれていません。どうして?
'elf_check_file'はファイルハンドル、エルフファイルの内容を期待していません。 'FILE *'を 'Elf32_Ehdr *'にキャストすることはできません。あなたはその内容を読む必要があります。 – aragaer
ファイルを* text *ファイルとして開くという問題もあります。 –
あなたは 'rb'が必要です。エルフはバイナリです。トロールと爆弾は、テキストとして開くことはできますが、エルフは開くことはできません。 –