Wie Lesen ELF-header in C?
Gewusst wie: öffnen Sie die Datei und kopieren Sie die Infos in einer anderen Datei. Ich muss nur kopieren Sie die Magische Zahl und version.
void read_header(FILE *Datei, Datei, *Datei2);
- Sie könnten in Erwägung ziehen, die ELF-Bibliothek —
libelf
. - Was genau wollen Sie erreichen? Das kopieren aller Daten auf eine andere Datei erfolgt mit
fread
undfwrite
- denken Sie daran, zu öffnen im Binär-Modus. ELF-Dateien werden nicht von anderen Binär-Dateien. - Sie sind nicht erlaubt zu ändern, den Sinn deiner Frage. Wenn Sie eine neue Frage posten sollte es als neue Frage, aber prüfen Sie zuerst, dass es nicht schon gefragt worden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Abhängig von der Plattform, wird eine header-Datei schon die Definition dieser Struktur vorhanden sein könnten. Zum Beispiel können Sie versuchen, gehören
elf.h
wenn Sie mit linux:Wenn Ihr system nicht bereits die
elf.h
können Sie überprüfen, wie der elf header aufgebaut ist hier.Dann erstellen Sie eine struct, die Ihre Daten aufnehmen und Sie einfach Lesen, so wie diese:
ElfW(Ehdr)
stattElf64_Ehdr
oderElf32_Ehdr
stat
auf Sie.Öffnen Sie Ihre elf-Datei mit
fopen()
Nun mit
fread()
Lesen Datenblock aus der Datei. und die Karte mit der format ELF-Datei und get header-bytes und schreiben in neue Datei wieder mitfopen()
Wenn Sie möchten, dass bare-metal-Analyse, Folgen Zyklon proposition oder, z.B. haben Sie einen Blick auf andere Leute tun so, wie Qt in http://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/plugin/qelfparser_p.cpp .
Doch, es gibt ein paar Bibliotheken mit higher-level-APIs. Nehmen https://wiki.freebsd.org/LibElf als Ausgangspunkt.