2017-11-21 16 views
2

Ich habe zur Zeit die Linux-BefehlExtrahieren der .text Abschnitt eines ELF in Java

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

wurde nur mit dem .text Abschnitt einer ausführbaren Datei zu erhalten.

Ich frage mich, ob es einige Java-Bibliothek/Code gibt, um die gleiche Funktionalität zur Verfügung zu stellen.

Dank

Antwort

2

Ich weiß nicht, warum Ihr previous question auf Eis gelegt wurde, schien es mir vollkommen gültig. Vielleicht fallen die java Tag, weil die meisten Java-Programmierer einfach nicht wissen, wie eine vernünftige Frage über ELF aussieht?

Wie auch immer, hier gehen wir wieder:

Sie benötigen die ELF specification und die psABI Ergänzung des jeweiligen Ziel (von denen einige here gesammelt werden, lesen Es ist auch hilfreich, um die Definitionen in der /usr/include/elf.h Header-Datei zu überprüfen auf. ein ELF-System.

im allgemeinen ist es ziemlich einfach den Beginn eines benannten Abschnitt zu finden. Sie müssen den Abschnitt Kopftabelle mit Hilfe der Elf-Header (Felder e_shoff, e_shentsize, e_shnum) und zu analysieren, sie lokalisieren (Das Eingangslayout lautet Elf32_Sdhr oder Elf64_Shdr). Um den Namen des Abschnitts zu finden, müssen Sie den Eintrag der Abschnittsüberschriftstabelle mit der Nummer e_shstrndx betrachten, der den Tabelleneintrag mit der Zeichenfolgentabelle angibt. Das Feld in der Abschnittsüberschrift ist nur ein Offset in diesem Abschnitt, und Sie müssen die nullterminierte Zeichenfolge an dieser Position mit .text vergleichen.

Eclipse-CDT hat einen ELF-Parser:

Vielleicht ist das eine Option, wenn Sie den tatsächlichen ELF bei der Umsetzung des Parsing interessiert sind.

+0

Wunderbar! Ich bin mit den skizzierten Schritten vorgegangen und habe ein ganz klares Verständnis - ich kann dir nicht genug danken! Alles Gute. – cokeburger

0

Wenn dies wäre von Nutzen für jedermann in der Zukunft:

Obwohl ich Mittel implementiert habe den .text Abschnitt mit der Verwendung des Eclipse-Datei-Parsers, das GNU binutils Java-Bibliothek stellt die einfachste zu extrahieren Weg dazu, obwohl ich die Bibliothek bisher übersehen habe.

Verwandte Themen