Ekstensi pengekspor file objek untuk Ghidra
Ekstensi Ghidra ini memungkinkan mengekspor bagian program sebagai file objek. File objek ini memiliki metadata yang valid (simbol, tabel relokasi…) dan dengan demikian dapat digunakan kembali secara langsung oleh rantai alat untuk diproses lebih lanjut.
Kasus penggunaan meliputi:
- Penambalan biner tingkat lanjut, dengan memanfaatkan tautan untuk memperbaiki bagian asli dan bagian yang dimodifikasi secara bersamaan alih-alih melakukan pekerjaan ini dengan tangan;
- Port perangkat lunak, dengan mengisolasi kode yang tidak bergantung pada sistem dari suatu program dan mengganti sisanya;
- Mengonversi program atau file objek dari satu format file ke format lainnya;
- Membuat perpustakaan, dengan mengekstrak bagian dari suatu program dan menggunakannya kembali dalam konteks lain;
- Proyek dekompilasi, dengan membagi program menjadi beberapa file objek dan mengimplementasikan kembali gaya Kapal Theseus ini;
- …
Matriks arsitektur set instruksi dan file objek yang didukung:
Gedung (CLI)
- Kloning repositori ini;
- Tentukan variabel lingkungan
GHIDRA_INSTALL_DIR
untuk menunjuk ke direktori instalasi Ghidra Anda; - Jalankan
gradle buildExtension
.
Arsip ekstensi Ghidra akan dibuat di dalam direktori dist/
.
Instalasi
- Unduh ekstensi dari halaman rilis atau buat secara lokal;
- Instal ekstensi di instance Ghidra Anda dengan
File > Install Extensions…
; - Aktifkan plugin
RelocationTableSynthesizedPlugin
dengan File > Configure
di dalam jendela CodeBrowser.
Penggunaan
- Pilih satu set alamat dalam tampilan Daftar;
- Jalankan penganalisis
Relocation table synthesizer
(tersedia dalam mode sekali pakai); - Panggil pengekspor file objek yang dapat direlokasi dengan
File > Export Program…
Relokasi yang direkonstruksi dapat dilihat dengan Window > Relocation table (synthesized)
.
- ️ Penganalisis synthesizer tabel relokasi bergantung pada database Ghidra yang terisi penuh (dengan simbol, tipe data, dan referensi yang dideklarasikan dengan benar) agar dapat berfungsi. Informasi yang salah atau hilang dapat menyebabkan relokasi yang rusak atau tidak ditemukan selama analisis.
- ️ Pengekspor file objek mengandalkan hasil penganalisis synthesizer tabel relokasi agar dapat berfungsi. Jika ragu, jalankan penganalisis ini tepat sebelum mengekspor file objek untuk memastikan konten tabel relokasi mutakhir dengan status program saat ini.
Bagaimana cara kerjanya?
File objek terbuat dari tiga bagian:
- Byte bagian yang dapat direlokasi;
- Tabel simbol;
- Meja relokasi.
Ketika sebuah linker dipanggil untuk menghasilkan file yang dapat dieksekusi dari sekumpulan file objek, ia akan:
- Letakkan bagian-bagiannya di memori;
- Hitung alamat simbol dalam ruang alamat virtual;
- Terapkan relokasi berdasarkan alamat akhir simbol ke byte bagian.
Biasanya tabel relokasi dibuang setelah proses ini, begitu pula tabel simbol jika simbol debugging tidak disimpan, hanya menyisakan byte bagian yang tidak dapat direlokasi. Namun, melalui analisis yang cermat, data ini dapat dibuat ulang, yang memungkinkan kita untuk secara efektif memutuskan tautan program kembali ke file objek.