我目前一直在使用 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_shoff
、 e_shentsize
、 e_shnum
)定位部分 header 表并解析它们(入口布局为 Elf32_Sdhr
或 Elf64_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/