HN paylaşımı: Bir programın bir bölümünü nesne dosyası olarak dışa aktaran Ghidra eklentisi
(github.com/boricj)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_DIRortam değişkenini Ghidra kurulum dizinine ayarlayıngradle buildExtensionkomutunu ç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üzerindenRelocationTableSynthesizedPlugineklentisini etkinleştirin
Kullanım
- Listing görünümünde bir adres kümesi seçin
Relocation table synthesizeranalizörünü çalıştırın (tek seferlik modda kullanılabilir)File > Export Program…üzerinden yeniden konumlandırılabilir nesne dosyası dışa aktarıcısını çağırınWindow > 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.