8
のelfファイルのメンバーにアクセスしてセクション名に正しいオフセットを取得しようとしていますが、0またはnullを返し続けます...セクションヘッダーelfファイル内のsh_nameメンバーを取得
私だけmmap()
とelf.h
を使用することになっていないんだ - 何のヘルパー関数
だから私がやった:
void* map_start = mmap(0, fd_stat.st_size, PROT_READ | PROT_WRITE , MAP_SHARED, fd, 0))
header = (Elf32_Ehdr *) map_start;
secoff = header->e_shoff;
section = (Elf32_Shdr *)(map_start + secoff);
が、私は実行します。
printf("name offset = %d\n", (section->sh_name));
それは私に0を与え続ける... 私は間違っているのですか?
私はそれがオフセットであると知っていますが、printfに入れたときにオフセットをintとして出力するとは思いませんか?どのように値を印刷するのですか - どのように表されていますか?また、実際の名前を取得するにはどうすればいいですか?私は.shstrtabの特定のセクションへのオフセットを取得することを知っています。私は、文字列テーブルをどのように参照するのですか?私はprintf( "%s"、sction + header.shstrtab [nameoffset])のようなことをしようとしました。しかし、それは私のために働いていない... – user1431301
@ user1431301更新を参照してください。 –
@EmployedRussian:逆を行う方法の例、つまり文字列テーブルを作成するコード例と、いくつかの値を持つセクションを与える例を教えてください。 –