如何用Java提取ELF的.text部分?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (167)

目前一直在使用linux命令

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

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

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

提问于
用户回答回答于

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

无论如何,我们再来一次:需要阅读相关目标的ELF规范和psABI补充(其中一些是在此处收集的。查看/usr/include/elf.hELF系统头文件中的定义也很有帮助。

通常,找到命名部分的开头是相当简单的。你需要找到节头表与ELF头(字段的帮助下e_shoffe_shentsizee_shnum),并分析它们(入口布局Elf32_SdhrElf64_Shdr)。要查找节的名称,您需要查看带有数字的节头表条目e_shstrndx,它为表条目提供了字符串表。sh_name节头中的字段只是该节的偏移量,您需要比较该位置的以空值终止的字符串.text

Eclipse CDT有一个ELF解析器:

  • org.eclipse.cdt.utils.elf

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

用户回答回答于

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

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

扫码关注云+社区

领取腾讯云代金券