Bindiffhelper
Ekstensi Ghidra yang menggunakan Bindiff pada proyek Ghidra Anda untuk menemukan fungsi yang cocok dan mengganti nama secara otomatis (Bindiff 6, 7, 8 didukung). Lihatlah Bindiff Manual untuk melihat cara kerjanya dan cara cocok dengan fungsi / blok dasar. Namun, dengan ekstensi ini, Bindiff otomatis dari dalam Ghidra, jadi Anda tidak perlu membedakan binari Anda sendiri.
Harap laporkan bug melalui fitur masalah di github
Apa yang dilakukan / changelog
v0.6
- Perbarui Perpustakaan Driver Sqlite, sekarang harus dijalankan di Apple Silicon
- Dukung perbedaan tekstual eksternal antara fungsi yang didekompilasi (lihat #24)
- UI pembaruan
v0.5
- Dukung Bindiff 8
- Rilis untuk Ghidra 11.1
V0.4.3
v0.4.2
- Tambahkan fungsi untuk mengimpor semua fungsi (bukan hanya yang diperiksa di tabel)
- Tambahkan fungsi untuk beralih kotak centang untuk beberapa elemen dalam tabel
- Perbarui untuk Mendukung Ghidra 10.3
V0.4.1
- Pembaruan untuk mendukung Gradle 7.5 dan Ghidra 10.1
V0.4.0
- Dukung Bindiff 7 dan Ghidra 10
v0.3.2
- Memperbaiki bug yang berbeda dengan file yang berbeda dari proyek yang sama tidak berfungsi
- Memperbaiki bug di mana file dengan nama pendek (<3 karakter>) tidak dapat diffesi
v0.3.1
- Memperbaiki kerusakan saat membuka file melalui opsi "From Project"
v0.3
- Fungsi Cocok Mewarnai dalam daftar
- Tambahkan komentar ke fungsi yang cocok di daftar yang menautkan ke biner lainnya
- Memperbaiki bug di mana perpustakaan protobuf hilang di beberapa bangunan
- Menu Pemuatan File Baru
v0.2
- Perbaiki bug di mana file yang harus diimpor perlu diperiksa.
- Tingkatkan ukuran dialog pemilihan file proyek
V0.1
- Bindiff Biner dibuka di Ghidra dengan biner lain dari proyek Ghidra yang sama, menunjukkan hasil dan nama fungsi impor
- Buka file Bindiff, dibuat dengan Bindiff 6, dari dua file .binexport dan impor nama fungsi yang cocok di Ghidra
Rilis berikutnya
- Impor Nama Fungsi dan Parameter Fungsi (Jenis dan Nama)
- Bandingkan biner yang dibuka di Ghidra dengan .Binexport eksternal (dari IDA misalnya)
- Komunikasi dengan Bindiff 6 GUI untuk menampilkan grafik untuk berbagai fungsi
Cara menginstal
Download .zip-File dari rilis, jika kompatibel dengan versi Ghidra Anda, jika tidak lihat cara membangun di bawah ini.
- Buka Ghidra
- Di jendela utama : Pergi ke File-> Instal Extensions ...
- Klik +-kutton di kanan atas dan pilih file zip Bindiffhelper
- Tutup Manajer Plugin. Restart ghidra untuk memuat plugin baru
- Lihat penggunaan di bawah ini
Merekomendasikan alat lain
- Biner plugin binexport atau dikompilasi dari sumber untuk versi ghidra spesifik Anda
- Bindiff (https://zynamics.com/software.html)
Tanpa ini, Anda hanya akan dapat mengimpor file .bindiff dan tidak secara otomatis mengekspor dan berbeda dari proyek GHIDRA Anda
Penggunaan
Pastikan plugin dimuat di penjelajah kode dengan membuka file di Ghidra dan di penjelajah kode pergi ke file-> configure
Klik plug-icon kecil di kanan atas:
Dan pastikan kotak centang di sebelah BindiffHelperplugin diperiksa.
Impor Eksternal .Bindiff
File .Binexport-Files yang sesuai harus berada di folder yang sama.
Buka file yang ingin Anda impor nama di browser kode, lalu buka Window-> BindiffHelper
Gunakan tombol buka dari bindiff atau item menu dan pilih file .bindiff Anda.
Pilih semua nama fungsi yang ingin Anda impor dan klik tombol NAMA Fungsi Impor di kanan atas atau item menu.
Bandingkan antar file dalam proyek Ghidra
Pergi ke Window-> BindiffHelper , pastikan tidak ada peringatan tentang Binexport atau Bindiff, lalu klik tombol Buka dari Proyek .
Pilih file lain dari pohon dan klik OK.
Cara membangun
Persyaratan:
- Instalasi Ghidra (https://ghidra-sre.org) atau disusun dari sumber
- Beberapa JDK. Mungkin ada batasan tertentu tergantung pada bagaimana Ghidra Anda dibangun dan plugin apa yang Anda gunakan. Saya merekomendasikan menggunakan Temurin 21 LTS, karena saat ini tampaknya bekerja dengan Binexport dan Bindiffhelper.
- Gradle (diuji dengan 7,5, 8.10)
Klon Repositori
Kloning repositori secara rekursif, karena tergantung pada binexport untuk definisi buffer protokol masing -masing.
git clone --recurse-submodules https://github.com/ubfx/BinDiffHelper.git
Membangunnya
Anda perlu mengatur variabel lingkungan GHIDRA_INSTALL_DIR ke dir instalasi ghidra. Jika Anda memiliki JDK yang berbeda diinstal, pastikan variabel lingkungan JAVA_HOME menunjuk ke salah satu yang digunakan instalasi GHIDRA Anda.
Ekstensi akan dibangun untuk versi Ghidra secara khusus.
Dan kemudian pergi folder bindiffhelper di cangkang Anda dan lakukan
Ini akan membangun Binexport di masing -masing submodule dan BindiffHelper di direktori induk. Seharusnya ada file .zip yang dibuat di direktori dist. Gunakan file .zip untuk menginstal sesuai dengan instruksi di atas.
Pengaturan pengembangan / debugging
Terkadang berguna untuk dapat men -debug ekstensi bersama dengan Ghidra, berikut adalah beberapa catatan tentang itu:
- Klon dan Bangun Ghidra dan Biarkan Gradle Membuat Proyek Gerhana Menurut Devguide
- Impor proyek ke Eclipse (pastikan memiliki plugin yang relevan untuk pengembangan ekstensi)
- Bangun dan instal Ghidradev
- Bongkar Ghidra Build dan tautkan Ghidradev ke sana. Mungkin harus mengatur variabel lingkungan
GHIDRA_INSTALL_DIR - Jalankan Ghidra dari Eclipse dan Instal Binexport Extension
- Buat proyek Eclipse Bindiffhelper dengan
gradle build eclipse - Impor ke gerhana dan gunakan Ghidradev untuk menautkannya ke Ghidra Build
- Debug As-> Ghidra
Saat men -debug Ghidra dengan ekstensi keluar dari gerhana, ekstensi dimuat ke Ghidra secara otomatis (jangan melalui pemasangan ekstensi biasa). Namun, plugin harus diaktifkan di Code Explorer.
Referensi
- https://github.com/google/bindiff/releases
- https://www.zynamics.com/bindiff/manual/
- https://github.com/google/binexport/
Ikon dari: Ikon Gratis Fatcow