Show HN: Ekstensi Ghidra untuk mengekspor sebagian program sebagai file objek
(github.com/boricj)Ekstensi pengekspor file objek untuk Ghidra
Ekstensi Ghidra ini memungkinkan sebagian program diekspor sebagai file objek. File objek ini memiliki metadata yang valid (simbol, tabel relokasi, dan sebagainya) sehingga dapat langsung digunakan kembali oleh toolchain.
Kasus penggunaan
- Binary patching tingkat lanjut: menggabungkan bagian asli dan yang dimodifikasi dengan memanfaatkan linker alih-alih melakukannya secara manual
- Porting perangkat lunak: memisahkan kode yang independen terhadap sistem dari program dan mengganti sisanya
- Konversi format file: mengubah program atau file objek ke format file lain
- Pembuatan library: mengekstrak sebagian program untuk digunakan kembali dalam konteks lain
- Proyek dekompilasi: membagi program menjadi beberapa file objek lalu mengimplementasikannya kembali
Arsitektur instruction set dan format file objek yang didukung
- x86: COFF (didukung), ELF (didukung)
- MIPS: COFF (tidak didukung), ELF (didukung)
Build (CLI)
- Clone repositori ini
- Tetapkan variabel lingkungan
GHIDRA_INSTALL_DIRke direktori instalasi Ghidra - Jalankan perintah
gradle buildExtension - Arsip ekstensi Ghidra akan dibuat di direktori
dist/
Instalasi
- Unduh ekstensi dari halaman rilis atau build secara lokal
- Instal ekstensi melalui
File > Install Extensions…pada instance Ghidra - Aktifkan plugin
RelocationTableSynthesizedPluginmelaluiFile > Configuredi jendela CodeBrowser
Cara penggunaan
- Pilih kumpulan alamat di tampilan Listing
- Jalankan analyzer
Relocation table synthesizer(dapat digunakan dalam mode one-shot) - Panggil pengekspor file objek relocatable melalui
File > Export Program… - Anda dapat memeriksa tabel relokasi yang direkonstruksi di
Window > Relocation table(synthesized)
- ⚠️ Analyzer Relocation table synthesizer memerlukan basis data Ghidra yang terisi penuh (simbol, tipe data, dan referensi yang dideklarasikan dengan akurat). Informasi yang tidak akurat atau hilang dapat menyebabkan relokasi yang salah atau tidak terdeteksi selama analisis
- ⚠️ Pengekspor file objek bergantung pada hasil analyzer Relocation table synthesizer. Jalankan analyzer ini sebelum mengekspor file objek untuk memastikan isi tabel relokasi sudah mutakhir
Cara kerjanya
File objek terdiri dari tiga bagian:
- byte section yang dapat direlokasi
- tabel simbol
- tabel relokasi
Saat linker membuat executable dari beberapa file objek:
- menempatkan section di memori
- menghitung alamat simbol dalam ruang alamat virtual
- menerapkan relokasi pada byte section berdasarkan alamat akhir simbol
Biasanya setelah proses ini tabel relokasi dibuang, dan tabel simbol juga dibuang kecuali simbol debug dipertahankan. Namun, melalui analisis yang cermat, data ini dapat dibuat ulang, sehingga memungkinkan program untuk di-delink kembali menjadi file objek.
Ringkasan GN⁺
- Ekstensi Ghidra ini memungkinkan sebagian program diekspor sebagai file objek.
- Ada berbagai kasus penggunaan seperti binary patching tingkat lanjut, porting perangkat lunak, dan konversi format file.
- Diperlukan basis data yang akurat, dan penting untuk mengekspor file objek setelah menjalankan analyzer.
- Proyek dengan fungsi serupa mencakup dekompiler seperti IDA Pro.
Belum ada komentar.