Die Erweiterung implementiert die eBPF-Architekturunterstützung für Ghidra und ermöglicht die Disassemblierung und Dekompilierung von eBPF-Programmen.
Seit Mai 2023 ist eBPF-for-Ghidra im offiziellen NationalSecurityAgency/Ghidra-Repository enthalten .
Sie können die neuesten Updates und Fixes für das eBPF-Modul direkt in Ghidra erhalten.
Dieses Repo wird möglicherweise in Zukunft archiviert.
Ein Beispiel für ein eBPF-Programm finden Sie hier.
Beispiel für die Disassemblierung und Dekompilierung von eBPF:
File → Install Extensions...
GHIDRA_INSTALL_DIR=${GHIDRA_HOME} gradle
und verwenden Sie Ghidra, um sie zu installieren: File → Install Extensions...
GhidraExtensions
.03.09.2019 – Implementierung von eBPF-Karten, benutzerdefinierter Relocation-Handler wurde implementiert
19.09.2019 — Problem mit dem Stack wurde behoben
20.09.2019 – eBPF-Aufrufhelfer werden als Systemaufrufe implementiert, Helfersignatur durch benutzerdefinierten eBPFAnalyzer hinzugefügt
23.09.2019 – Fehlerhafte Lesezeichen behoben
01.12.2020 — neue eBPF-Helfer hinzugefügt
23.06.2022 – Unterstützung für relative Aufrufe hinzugefügt (Verlagerungstyp R_BPF_64_32
). Danke @cnwangjihe für diese Idee. imm
der Aufrufanweisung, wobei bpf_call->src_reg == BPF_PSEUDO_CALL
jetzt den relativen Offset zur Zielfunktion enthält.
Vor:
Nach:
24.06.2022 – Senden der Pull-Anfrage an das offizielle Ghidra-Repository als Hauptlieferant des eBPF-Prozessors
19.12.2022 – Unterstützung für BPF_ATOMIC-Operationen hinzugefügt, ALU32-Anweisungen hinzugefügt, BPF_JMP32-Anweisungen hinzugefügt, JSET-Anweisung behoben
03.05.2023 – eBPF-Prozessorunterstützung zum offiziellen Ghidra-Repository im Commit 506ca1e hinzugefügt
Ab Ghidra 10.3 ist das eBPF-Modul standardmäßig in Ghidra enthalten. Es ist nicht mehr erforderlich, dieses Projekt zu erstellen und als Ghidra-Erweiterung hinzuzufügen. Für Benutzer älterer Versionen von Ghidra ist das eBPF-Modul weiterhin über bestehende Releases zugänglich.
Offizielle Kernel-Dokumentation
Offizielle Kernel-Dokumentation – Fragen
eBPF-Programme zum Testen in Ghidra
Einfacher eBPF-Disassembler in Rust
Rust virtuelle Maschine und JIT-Compiler für eBPF-Programme
eBPF-Helfer (alle)
eBPF-Übersicht