【问题标题】:How do I extract all the fields from a Section Header for an elf file?如何从 elf 文件的部分标题中提取所有字段?
【发布时间】:2017-04-04 00:48:33
【问题描述】:

所以我可以在这里使用精灵教程获取 sh_name:http://wiki.osdev.org/ELF_Tutorial 和这个问题:getting the sh_name member in a section header elf file,但是当使用相同的方法获取节标题中的其余字段时,我没有当我在我正在分析的目标文件上调用readelf -S 时,得到相同的输出。我正在打印以下字符串:

sh_strtab_p + shdr[i].sh_offset

当我这样做时,我什么也得不到。是选角的问题吗?我应该将其转换为 int 或类似的东西吗?我认为这将是一种字符串格式,因为我假设 sh_strtab 是与节标题相关联的字符串表。

【问题讨论】:

  • 您的输入流是否以二进制模式读取?
  • 不,这可能就是原因。但是返回时它应该还是空的吗?
  • 嗯,好像没什么区别?我做错了什么?

标签: c++ elf readelf


【解决方案1】:

所以,事实证明我很傻,答案就是将Elf_Shdr.sh_offset(这是一个uint32_t)转换为十六进制,你会得到与使用readelf时相同的值。除了名称之外,不需要对任何内容使用字符串索引。所有其他字段都可以以相同的方式处理,如果您想要标志和类型的字符串表示,这里有一个表将值映射到标志/类型的名称:https://docs.oracle.com/cd/E19683-01/817-3677/chapter6-94076/index.html

【讨论】:

    猜你喜欢
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    • 2020-04-13
    • 2013-03-12
    相关资源
    最近更新 更多