在Java中提取ELF的.text部分

时间:2017-11-21 18:54:55

标签: java parsing elf

我目前一直在使用linux命令

objcopy -j .text -O binary sample sample.text

只获取可执行文件的.text部分。

我想知道是否有一些Java库/代码可以提供相同的功能。

由于

2 个答案:

答案 0 :(得分:2)

我不知道为什么你的previous question被搁置,这对我来说似乎完全有效。也许放弃java标签,因为大多数Java程序员都不知道关于ELF的合理问题是什么样的?

无论如何,我们再来一次:

您需要阅读相关目标的ELF specification和psABI补充(其中一些已收集here。它还有助于审核{{1}中的定义ELF系统上的头文件。

通常,找到命名部分的开头是相当简单的。您需要借助elf标题(字段/usr/include/elf.he_shoffe_shentsize)找到节标题表并解析它们(条目布局为e_shnum或{ {1}})。要查找节的名称,您需要查看带有数字Elf32_Sdhr的节头表条目,它为表条目提供了字符串表。节标题中的Elf64_Shdr字段只是该节的偏移量,您需要将该位置的以空字符结尾的字符串与e_shstrndx进行比较。

Eclipse CDT有一个ELF解析器:

除非您有兴趣实现实际的ELF解析,否则可能是一个选项。

答案 1 :(得分:0)

如果将来对任何人都有用:

虽然我已经实现了使用Eclipse文件解析器提取.text部分的方法,但GNU binutils Java库提供了最简单的方法,即使我以前忽略了库。