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