【问题标题】:understand hexedit of an elf了解精灵的十六进制编辑
【发布时间】:2012-06-24 18:12:56
【问题描述】:

考虑以下 ELF 文件的十六进制编辑显示。

00000000   7F 45 4C 46  01 01 01 00  00 00 00 00  .ELF........
0000000C   00 00 00 00  02 00 03 00  01 00 00 00  ............
00000018   30 83 04 08  34 00 00 00  50 14 00 00  0...4...P...
00000024   00 00 00 00  34 00 20 00  08 00 28 00  ....4. ...(.
00000030   24 00 21 00  06 00 00 00  34 00 00 00  $.!.....4...
0000003C   34 80 04 08  34 80 04 08  00 01 00 00  4...4.......
00000048   00 01 00 00  05 00 00 00  04 00 00 00  ............
  1. 它有多少节标题?
  2. 是目标文件还是可执行文件?
  3. 它有多少程序头?
  4. 如果有程序头,第一个程序头做什么?
  5. 如果有节头,节头表的偏移量是多少?

【问题讨论】:

  • 不要使用 hexedit,使用带有正确选项的 objdump,例如 -f 或 -x...

标签: elf hex-editors


【解决方案1】:

奇怪,这个 hexdump 在我看来像 your homework...

  1. 有 36 个节标题。
  2. 它是一个可执行文件。
  3. 它有 8 个程序头。
  4. 从第一个程序头中的第一个字(偏移量 0x34:0x0006)可以看出,它的类型为PT_PHDR,它只是告知程序头表本身的特征。
  5. 节头表从字节 5200 开始(十六进制为 0x1450)。

我怎么知道这些东西?通过将十六进制转储到二进制文件中并使用readelf -a 读取它(因为我很懒)。除了第一个问题。 4,我必须通过阅读 man 5 elf 手动弄清楚。

【讨论】:

  • 您确定有 36 个节标题吗?为什么不是34?从 hexedit 看来是 34 .. 你在哪里看到 36?谢谢
  • 节标题的数量在偏移量 0x30 处,即24 00,即(记住小字节序!)0x0024,等于十进制的 36。
  • 你好,这可能有点晚了,但我想知道你是如何开始解释这个十六进制转储的?您能否推荐任何资源来获取信息,例如节标题的数量等(没有 objdump 或 readelf)
  • 是的,只需查看 ELF (en.wikipedia.org/wiki/Executable_and_Linkable_Format) 的 Wikipedia 文章。那里描述了二进制格式。例如,您会看到在 0x30 处有节头表条目的数量(2 个字节)。因此,您查看偏移量 0x30,查看两个字节并将其转换为十进制(字节序)。在 0x10 处,有偏移文件类型,2 个字节。你读到 02 00,它是 0x02(字节序),它是 ET_EXEC,所以它是一个可执行文件。等等……
猜你喜欢
  • 2023-03-27
  • 2019-02-27
  • 2011-11-20
  • 2012-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-27
  • 2011-06-10
相关资源
最近更新 更多