8
我试图通过访问精灵文件的成员来获得正确的偏移量,但它一直给我零或为零...在一个节头文件中获取sh_name成员elf文件
我应该只使用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中输入时将偏移量打印为整数?我如何打印值 - 以任何方式表示?还,我如何得到实际的名称 - 我知道我得到的偏移量在.shstrtab中的特定部分 - 但我打印名称?我的意思是,我如何引用字符串表?我试图做一些像printf(“%s”,sction + header.shstrtab [nameoffset]);但这并不适合我... – user1431301
@ user1431301看到更新。 –
@EmployedRussian:你能否举一个例子来说明如何做相反的事情,即一个代码示例如何创建字符串表,然后是具有某些值的部分? –