我目前一直在使用 linux 命令

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

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

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

谢谢

最佳答案

我不知道为什么您的 previous question(注意:链接只能由某些用户访问)被搁置,它对我来说似乎完全有效。也许删除 java 标签是因为大多数 Java 程序员只是不知道关于 ELF 的合理问题是什么样的?
无论如何,我们又来了:
您需要阅读相关目标的 ELF specification 和 psABI 补充(其中一些已收集 here 。在 ELF 系统上查看 /usr/include/elf.h 头文件中的定义也很有帮助。
通常,找到命名部分的开头是相当简单的。您需要借助 elf header (字段 e_shoffe_shentsizee_shnum )定位部分 header 表并解析它们(入口布局为 Elf32_SdhrElf64_Shdr )。要找到节的名称,您需要查看编号为 e_shstrndx 的节头表条目,它给出了带有字符串表的表条目。部分标题中的 sh_name 字段只是该部分的偏移量,您需要将该位置的空终止字符串与 .text 进行比较。
Eclipse CDT 有一个 ELF 解析器:

  • org.eclipse.cdt.utils.elf

  • 也许这是一个选项,除非您对实现实际的 ELF 解析感兴趣。

    关于java - 在 Java 中提取 ELF 的 .text 部分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47420617/

    10-13 04:56