1 poin oleh GN⁺ 2024-08-24 | Belum ada komentar. | Bagikan ke WhatsApp

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_DIR ke 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 RelocationTableSynthesizedPlugin melalui File > Configure di jendela CodeBrowser

Cara penggunaan

  1. Pilih kumpulan alamat di tampilan Listing
  2. Jalankan analyzer Relocation table synthesizer (dapat digunakan dalam mode one-shot)
  3. Panggil pengekspor file objek relocatable melalui File > Export Program…
  4. 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.

Belum ada komentar.