L'extension implémente la prise en charge de l'architecture eBPF pour Ghidra et permet le désassemblage et la décompilation des programmes eBPF.
Depuis mai 2023, eBPF-for-Ghidra est inclus dans le référentiel officiel NationalSecurityAgency/Ghidra .
Vous pouvez obtenir les dernières mises à jour et correctifs pour le module eBPF directement dans Ghidra.
Ce dépôt pourra être archivé à l’avenir.
Exemple de programme eBPF que vous pouvez obtenir ici.
Exemple de désassemblage et de décompilation d'eBPF :
File → Install Extensions...
GHIDRA_INSTALL_DIR=${GHIDRA_HOME} gradle
et utilisez Ghidra pour l'installer : File → Install Extensions...
GhidraExtensions
.03.09.2019 — Implémentation des cartes eBPF, un gestionnaire de relocalisation personnalisé a été implémenté
19.09.2019 — le problème avec la pile est résolu
20.09.2019 — Les assistants d'appel eBPF sont implémentés en tant qu'appels système, ajout de la signature de l'assistant via un eBPFAnalyzer personnalisé
23.09.2019 — mauvais signets corrigés
01.12.2020 — nouveaux assistants eBPF ajoutés
23.06.2022 — ajout de la prise en charge des appels relatifs (type de relocalisation R_BPF_64_32
). Merci @cnwangjihe pour cette idée. imm
de l'instruction d'appel où bpf_call->src_reg == BPF_PSEUDO_CALL
contient maintenant le décalage relatif par rapport à la fonction cible.
Avant:
Après:
24.06.2022 — envoi de la Pull Request au référentiel officiel Ghidra en tant que principal fournisseur du processeur eBPF
19.12.2022 — prise en charge ajoutée des opérations BPF_ATOMIC, instructions ALU32 ajoutées, instructions BPF_JMP32 ajoutées, instruction JSET corrigée
03.05.2023 — Prise en charge du processeur eBPF ajoutée au référentiel officiel Ghidra dans le commit 506ca1e
À partir de Ghidra 10.3, le module eBPF est inclus par défaut dans Ghidra. Il n'est plus nécessaire de construire ce projet et de l'ajouter en tant qu'extension Ghidra. Pour les utilisateurs d'anciennes versions de Ghidra, le module eBPF est toujours accessible via les versions existantes.
Documentation officielle du noyau
Documentation officielle du noyau - questions
Programmes eBPF à tester à Ghidra
Désassembleur simple d'eBPF dans Rust
Machine virtuelle Rust et compilateur JIT pour les programmes eBPF
Assistants eBPF (tous)
Aperçu de l'eBPF