Berbagai modul untuk Ghidra untuk membantu dengan firmware PC Reverse Engineering. Ini diterima sebagai proyek Coreboot untuk GSOC 2019.
JDK 11 (atau lebih baru) dan Ghidra 10.1 (atau lebih baru) diperlukan.
Sistem pembuatan lulusan standar Ghidra digunakan. Atur variabel lingkungan GHIDRA_INSTALL_DIR sebelum membangun, atau atur sebagai properti gradle (berguna untuk membangun dalam sebuah IDE):
$ export GHIDRA_INSTALL_DIR= " /path/to/ghidra "
$ ./gradlew echo GHIDRA_INSTALL_DIR=/path/to/ghidra > gradle.properties Zip modul akan output ke dist/ . Gunakan File> Instal Ekstensi dan pilih Green Plus untuk menelusuri ekstensi. Restart Ghidra saat diminta.
Untuk fungsionalitas yang tepat, plugin harus dibangun dengan JRE yang sama yang digunakan oleh instalasi Ghidra Anda. Jika Anda memiliki beberapa lingkungan runtime Java yang diinstal, pilih JRE yang benar dengan mengatur variabel lingkungan JAVA_HOME sebelum membangun.
Tambahkan ROM opsi PCI ke proyek Ghidra. ROM opsi Legacy x86 dapat secara langsung dimuat untuk analisis. Pastikan format biner diatur ke ROM opsi PCI x86 , dan impor biner.
ROM Opsi UEFI atau ROM opsi yang berisi lebih dari satu gambar harus diimpor menggunakan Filesystem Loader. Saat diminta untuk memilih mode impor, pilih Sistem File . Gambar yang terkandung dalam ROM opsi akan ditampilkan, dan dapat diimpor untuk dianalisis. Gambar Legacy X86 akan ditangani pemuat ROM opsi PCI X86, dan gambar UEFI akan ditangani oleh PE32 Loader (kompresi didukung). Informasi untuk setiap gambar dapat ditampilkan dengan memilih Get Info di menu klik kanan.
Tambahkan gambar firmware yang didukung ke proyek GHIDRA. Loader gambar firmware mendukung gambar Intel dengan deskriptor flash, gambar coreboot dengan tata letak FMAP/CBFS, dan volume firmware UEFI. Mode impor sistem file dapat digunakan untuk melihat file tertanam dalam gambar firmware yang ditentukan.
Perhatikan bahwa beberapa gambar firmware UEFI dapat menyimpan volume firmware bersarang dalam file Freeform/Raw (atau bagian FFFS FFS FREForm/RAW). File tersebut dapat diimpor sebagai volume firmware dengan memilih sistem file terbuka di menu klik kanan untuk file freeform/mentah yang ditentukan. Jika tidak ada volume firmware bersarang ditemukan, pesan kesalahan akan ditampilkan ( No file system provider for... ).
Script helper termasuk dalam direktori Ghidra_scripts plugin, yang harus secara otomatis ditambahkan ke daftar direktori skrip di Ghidra.
Jalankan skrip helper uefi dengan memilih uefihelper.java di jendela manajer skrip (diakses dari jendela -> manajer skrip ).
Untuk memodifikasi pustaka tipe data UEFI, memodifikasi template PRF dalam data/gen_prf.sh sebagaimana diperlukan dan menghasilkan file PRF baru. Buka file PRF yang dihasilkan di File -> Parse C Sumber . Bangun pustaka tipe data yang diperbarui dengan memilih parse ke file .... Timpa pustaka tipe data asli dalam data dan membangun kembali plugin.
Ini adalah beberapa proyek menarik yang terkait dengan pembalikan UEFI:
Apache 2.0, dengan beberapa pengecualian:
src/efidecompress/c/efidecompress.c : BSD src/efidecompress/c/efidecompress.c adalah versi Decompress.c yang dimodifikasi ringan dari UEFI-Firmware-Parser (yang sendiri berasal dari aslinya di EDK2 Basetools).
lib/xz-1.8.jar diambil dari XZ untuk proyek Java.
IFD FS Loader di src/main/java/firmware/ifd menggunakan parser dari Uefitool sebagai referensi.
Basis data GUID dalam data/guids.csv diambil dari UEFITOOL.
Pustaka tipe data UEFI dalam data/uefi_*.gdt dihasilkan dengan data/gen_prf.sh , yang sebagian didasarkan pada definisi parser UEFI dari permintaan tarik GHIDRA oleh WRFFRZ. Pustaka tipe data ini menggunakan header dari EDK2 MDEPKG.
Ghidravitaloader oleh Xerpi digunakan sebagai referensi untuk beberapa bagian skrip helper UEFI.