1 puan yazan GN⁺ 2024-08-24 | Henüz yorum yok. | WhatsApp'ta paylaş

Ghidra için nesne dosyası dışa aktarıcı eklentisi

Bu Ghidra eklentisi, bir programın belirli bölümlerini nesne dosyası olarak dışa aktarmanıza olanak tanır. Bu nesne dosyaları geçerli meta verilerle (semboller, yeniden konumlandırma tabloları vb.) birlikte gelir, böylece araç zinciri tarafından doğrudan yeniden kullanılabilir.

Kullanım senaryoları

  • Gelişmiş ikili yama uygulama: Özgün ve değiştirilmiş parçaları elle birleştirmek yerine bağlayıcıyı kullanarak birleştirme
  • Yazılım taşıma: Sisteme bağımsız kodu programdan ayırıp geri kalanını değiştirme
  • Dosya biçimi dönüştürme: Bir programı veya nesne dosyasını başka bir dosya biçimine dönüştürme
  • Kütüphane oluşturma: Programın bir bölümünü çıkarıp başka bir bağlamda yeniden kullanma
  • Dekompilasyon projeleri: Programı birden çok nesne dosyasına bölüp yeniden uygulama

Desteklenen komut kümesi mimarileri ve nesne dosyası biçimleri

  • x86: COFF(destekleniyor), ELF(destekleniyor)
  • MIPS: COFF(desteklenmiyor), ELF(destekleniyor)

Derleme (CLI)

  • Bu depoyu klonlayın
  • GHIDRA_INSTALL_DIR ortam değişkenini Ghidra kurulum dizinine ayarlayın
  • gradle buildExtension komutunu çalıştırın
  • Ghidra eklenti arşivi dist/ dizininde oluşturulur

Kurulum

  • Eklentiyi sürüm sayfasından indirin veya yerelde derleyin
  • Ghidra örneğinde File > Install Extensions… yoluyla eklentiyi kurun
  • CodeBrowser penceresinde File > Configure üzerinden RelocationTableSynthesizedPlugin eklentisini etkinleştirin

Kullanım

  1. Listing görünümünde bir adres kümesi seçin
  2. Relocation table synthesizer analizörünü çalıştırın (tek seferlik modda kullanılabilir)
  3. File > Export Program… üzerinden yeniden konumlandırılabilir nesne dosyası dışa aktarıcısını çağırın
  4. Window > Relocation table(synthesized) içinde yeniden oluşturulmuş yeniden konumlandırma tablosunu görüntüleyin
  • ⚠️ Relocation table synthesizer analizörü, tamamen doldurulmuş bir Ghidra veritabanına (doğru tanımlanmış semboller, veri türleri ve başvurular) ihtiyaç duyar. Hatalı veya eksik bilgiler, analiz sırasında yanlış ya da tespit edilemeyen yeniden konumlandırmalara yol açabilir
  • ⚠️ Nesne dosyası dışa aktarıcısı, Relocation table synthesizer analizörünün sonuçlarına dayanır. Nesne dosyasını dışa aktarmadan önce bu analizörü çalıştırarak yeniden konumlandırma tablosu içeriğinin güncel olduğundan emin olun

Nasıl çalışır

Bir nesne dosyası üç bölümden oluşur:

  • Yeniden konumlandırılabilir bölüm baytları
  • Sembol tablosu
  • Yeniden konumlandırma tablosu

Bağlayıcı, birden çok nesne dosyasından yürütülebilir dosya oluştururken:

  • Bölümleri belleğe yerleştirir
  • Sanal adres alanında sembollerin adreslerini hesaplar
  • Bölüm baytlarına, sembollerin nihai adreslerine göre yeniden konumlandırmaları uygular

Genelde bu süreçten sonra yeniden konumlandırma tablosu atılır; hata ayıklama sembolleri korunmadığı sürece sembol tablosu da atılır. Ancak dikkatli bir analizle bu veriler yeniden üretilebilir ve bu sayede program tekrar nesne dosyalarına delink edilebilir.

GN⁺ özeti

  • Bu Ghidra eklentisi, bir programın bazı bölümlerini nesne dosyası olarak dışa aktarmaya olanak tanır.
  • Gelişmiş ikili yama uygulama, yazılım taşıma ve dosya biçimi dönüştürme gibi çeşitli kullanım senaryoları vardır.
  • Doğru bir veritabanı gerekir; analizörü çalıştırdıktan sonra nesne dosyasını dışa aktarmak önemlidir.
  • Benzer işlevler sunan projeler arasında IDA Pro gibi dekompiler araçları bulunur.

Henüz yorum yok.

Henüz yorum yok.