在 Java 中提取 ELF 的 .text 部分
Extracting the .text section of an ELF in Java
我目前一直在使用 linux 命令
objcopy -j .text -O binary sample sample.text
仅获取可执行文件的 .text 部分。
我想知道是否有一些 Java library/code 可以提供相同的功能。
谢谢
我不知道为什么你的 previous question (note: link only accessible to some users) was put on hold, it seemed perfectly valid to me. Maybe drop the java 标签因为大多数 Java 程序员只是不知道关于 ELF 的合理问题是什么样的?
无论如何,我们再来一次:
您需要阅读 ELF specification and the psABI supplement for the relevant target (some of which are collected here。在 ELF 系统上查看 /usr/include/elf.h
header 文件中的定义也很有帮助。
一般来说,找到命名部分的开头是相当简单的。您需要在精灵 header 的帮助下找到 header table 部分(字段 e_shoff
、e_shentsize
、e_shnum
)并解析它们(条目布局为 Elf32_Sdhr
或 Elf64_Shdr
)。要查找该部分的名称,您需要查看编号为 e_shstrndx
的部分 header table 条目,它给出了带有字符串 [=47] 的 table 条目=]. header 部分中的 sh_name
字段只是该部分的偏移量,您需要将该位置的 null-terminated 字符串与 .text
.
进行比较
Eclipse CDT 有一个 ELF 解析器:
也许这是一个选项,除非您有兴趣实现实际的 ELF 解析。
如果这对以后的任何人都有用:
尽管我已经实现了使用 Eclipse 文件解析器提取 .text 部分的方法,但 GNU binutils Java 库提供了最简单的方法,尽管我之前忽略了该库.
我目前一直在使用 linux 命令
objcopy -j .text -O binary sample sample.text
仅获取可执行文件的 .text 部分。
我想知道是否有一些 Java library/code 可以提供相同的功能。
谢谢
我不知道为什么你的 previous question (note: link only accessible to some users) was put on hold, it seemed perfectly valid to me. Maybe drop the java 标签因为大多数 Java 程序员只是不知道关于 ELF 的合理问题是什么样的?
无论如何,我们再来一次:
您需要阅读 ELF specification and the psABI supplement for the relevant target (some of which are collected here。在 ELF 系统上查看 /usr/include/elf.h
header 文件中的定义也很有帮助。
一般来说,找到命名部分的开头是相当简单的。您需要在精灵 header 的帮助下找到 header table 部分(字段 e_shoff
、e_shentsize
、e_shnum
)并解析它们(条目布局为 Elf32_Sdhr
或 Elf64_Shdr
)。要查找该部分的名称,您需要查看编号为 e_shstrndx
的部分 header table 条目,它给出了带有字符串 [=47] 的 table 条目=]. header 部分中的 sh_name
字段只是该部分的偏移量,您需要将该位置的 null-terminated 字符串与 .text
.
Eclipse CDT 有一个 ELF 解析器:
也许这是一个选项,除非您有兴趣实现实际的 ELF 解析。
如果这对以后的任何人都有用:
尽管我已经实现了使用 Eclipse 文件解析器提取 .text 部分的方法,但 GNU binutils Java 库提供了最简单的方法,尽管我之前忽略了该库.