Ekstensi ini mengimplementasikan dukungan arsitektur eBPF untuk Ghidra dan memungkinkan pembongkaran dan dekompilasi program eBPF.
Sejak Mei 2023, eBPF-for-Ghidra telah disertakan dalam repositori resmi Badan Keamanan Nasional/Ghidra .
Anda bisa mendapatkan update dan perbaikan terkini untuk modul eBPF langsung di Ghidra.
Repo ini mungkin diarsipkan di masa mendatang.
Contoh program eBPF bisa Anda dapatkan disini.
Contoh pembongkaran dan dekompilasi eBPF:
File → Install Extensions...
GHIDRA_INSTALL_DIR=${GHIDRA_HOME} gradle
dan gunakan Ghidra untuk menginstalnya: File → Install Extensions...
GhidraExtensions
.03.09.2019 — Implementasi peta eBPF, pengendali relokasi khusus diterapkan
19.09.2019 — masalah dengan tumpukan teratasi
20.09.2019 — Pembantu panggilan eBPF diimplementasikan sebagai syscall, menambahkan tanda tangan pembantu melalui eBPFAnalyzer khusus
23.09.2019 — bookmark buruk diperbaiki
01.12.2020 - pembantu eBPF baru ditambahkan
23.06.2022 — menambahkan dukungan untuk panggilan relatif (tipe relokasi R_BPF_64_32
). Terima kasih @cnwangjihe untuk ide ini. imm
instruksi panggilan di mana bpf_call->src_reg == BPF_PSEUDO_CALL
sekarang berisi offset relatif ke fungsi target.
Sebelum:
Setelah:
24.06.2022 — membuat Pull Request ke repositori resmi Ghidra sebagai pemasok utama prosesor eBPF
19.12.2022 — menambahkan dukungan untuk operasi BPF_ATOMIC, instruksi ALU32 ditambahkan, instruksi BPF_JMP32 ditambahkan, instruksi JSET diperbaiki
03.05.2023 — Dukungan prosesor eBPF ditambahkan ke repositori resmi Ghidra di commit 506ca1e
Mulai dari Ghidra 10.3, modul eBPF disertakan secara default di Ghidra. Tidak perlu lagi membangun proyek ini dan menambahkannya sebagai ekstensi Ghidra. Bagi pengguna Ghidra versi lama, modul eBPF masih dapat diakses melalui Rilis yang ada.
Dokumentasi kernel resmi
Dokumentasi kernel resmi - pertanyaan
program eBPF untuk diuji di Ghidra
Pembongkar eBPF sederhana di Rust
Mesin virtual Rust dan kompiler JIT untuk program eBPF
pembantu eBPF (semua)
Ikhtisar eBPF