6 Stimmen

Ändern der Datei elf

Ich möchte eine neue Flagge zu einer Elf-Datei hinzufügen. Dieses Flag sollte dann für den Kernel dem Kernel im Prozessdeskriptor zur Verfügung stehen. Meine erste Idee war, libelf zu verwenden, aber leider scheint es unter Ubuntu einen Fehler damit zu geben. Elfedit wäre wahrscheinlich ein nettes Werkzeug gewesen, aber ich habe keine Version für Linux gefunden, insbesondere nicht für Ubuntu.

Daher frage ich mich, ob mir jemand einen Vorschlag machen kann, ob es noch ein anderes nützliches Tool gibt um eine benutzerdefinierte Flagge zu einer Elf-Datei hinzuzufügen?

Vielen Dank für Ihre Hilfe!

0 Stimmen

Auf welchen Fehler sind Sie in libelf gestoßen?

0 Stimmen

In der Datei enthalten von type.c:3: /usr/include/libelf.h:98: error: expected specifier-qualifier-list before 'off64_t' ... Mehr kann hier gefunden werden: bugs.launchpad.net/ubuntu/+s...ls/+bug/201078

2voto

Jonathan Leffler Punkte 694013

Leute, die in der Lage sind, den Kernel zu modifizieren, um die Vorteile des neuen Flags zu nutzen, würden wahrscheinlich nicht fragen, wie man das Flag zu den ELF-Bibliotheken hinzufügt.

Wie soll der Kernel dieses neue Flag verwenden? Was ist der Zweck des Flags?

Da Sie die Standard-Libelf ergänzen, können Sie den Fehler nicht für Ubuntu beheben und sie wissen lassen, dass Sie dies getan haben (stellen Sie ihnen den Fehler zur Verfügung - obwohl sie ihn wahrscheinlich in der Kette weitergeben müssen).

0 Stimmen

Ja, Sie haben völlig Recht. Wenn ich ein richtiger Kernel-Hacker wäre, wäre dies wahrscheinlich eine einfache Aufgabe. Leider fange ich gerade erst mit der praktischen Arbeit am Kernel an. Im Grunde möchte ich in der ELF-Datei ein Flag angeben, das dem Kernel mitteilt, dass eine Anwendung eine "Sonderbehandlung" benötigt. Diese Sonderbehandlung soll bei Kontextwechseln erfolgen, und da würde ich gerne wissen, ob der Task, der ausgeschaltet wurde, dieses benutzerdefinierte Flag in der ELF-Datei hatte. Mit anderen Worten, ich habe 2 Aufgaben: (1) Hinzufügen eines benutzerdefinierten Flags zur entsprechenden ausführbaren Datei (2) Verfügbarmachen dieses benutzerdefinierten Flags für den Kernel

1voto

Serge C Punkte 2137

Bitte beachten Sie ELFIO-Bibliothek . Sie enthält WriteObj- und Writer-Beispiele. Mit dieser Bibliothek können Sie ELF-Binärdateien erstellen und/oder ändern.

0 Stimmen

Ich mag die Bibliothek wirklich und ich habe die letzten Tage damit gearbeitet (und versucht, sie in eine Bibliothek zu konvertieren). Ich habe den gesamten Quellcode mit Vorlagen und Makros konvertiert (aka in Deklarationen und Definitionen aufgeteilt), obwohl die Bibliothek jetzt abstürzt (lol). Könnten Sie sich vorstellen, eine "echte" Bibliothek daraus zu machen?

0voto

incompetent Punkte 1615

(die Frage ist zwar alt, aber als Referenz schreibe ich die Antwort auf der Grundlage meiner eigenen Erfahrungen)

Ich schlage vor, die Elf-Datei in die Speicherstruktur einzulesen, Änderungen an den Flags vorzunehmen und den Prozessspeicher mit der In-Memory-Struktur zu laden. Diese Methode benötigt weniger Aufwand als die Fehlerbehebung. Um zu beginnen, überprüfen Sie die Datei elf.c auf elf, program header, section headers struct. Sie können den Datei-Header in Ihrer struct lesen, die drei struct-Mitglieder für elf, program, section haben sollte. Beginnen Sie das Lesen in Ihrer struct vom elf-Header aus. Auf die gleiche Weise können Sie alle Abschnitte durch Abschnittskopfzeilen lesen. Die Kapselung von 3 Header-Strukturen in Ihrer eigenen Struktur gibt Ihnen auch die Möglichkeit, zusätzlich benötigte Daten in Ihren anderen Strukturmitgliedern zu haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X