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:你能否舉一個例子來說明如何做相反的事情,即一個代碼示例如何創建字符串表,然後是具有某些值的部分? –