代码之家  ›  专栏  ›  技术社区  ›  user7183233

正在提取。Java中ELF的文本部分

  •  3
  • user7183233  · 技术社区  · 7 年前

    我目前一直在使用linux命令

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

    为了获得公正。可执行文件的文本部分。

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

    谢谢

    2 回复  |  直到 7 年前
        1
  •  3
  •   Florian Weimer    3 年前

    我不知道你为什么 previous question (注意:链接只对一些用户可用)被搁置,对我来说似乎完全有效。也许放下 java 因为大多数Java程序员不知道ELF的合理问题是什么?

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

    你需要阅读 ELF specification 以及相关目标的psABI补充(其中一些已收集 here . 查看中的定义也很有帮助 /usr/include/elf.h ELF系统上的头文件。

    一般来说,找到命名节的开头相当简单。您需要在elf标题(字段)的帮助下定位节标题表 e_shoff , e_shentsize , e_shnum )并解析它们(条目布局为 Elf32_Sdhr Elf64_Shdr ). 要查找节的名称,需要查看带有数字的节标题表条目 e_shstrndx ,它提供带有字符串表的表条目。这个 sh_name 节头中的字段只是该节的偏移量,您需要将该位置以null结尾的字符串与 .text .

    Eclipse CDT有一个ELF解析器:

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

        2
  •  1
  •   user7183233 user7183233    7 年前

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

    虽然我已经实现了提取方法。通过使用Eclipse文件解析器,GNU binutils Java库提供了最简单的方法,尽管我以前忽略了该库。