hacktricks/crypto-and-stego/cryptographic-algorithms/unpacking-binaries.md

5.6 KiB
Raw Blame History

Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'ı desteklemenin diğer yolları:

Paketlenmiş ikili dosyaları tanımlama

  • Dize eksikliği: Paketlenmiş ikili dosyaların neredeyse hiç dize içermediği yaygındır
  • Kullanılmayan çok sayıda dize: Ayrıca, bir kötü amaçlı yazılımın ticari bir paketleyici kullandığında çok sayıda çapraz referans olmayan dize bulmak yaygındır. Bu dizeler varsa bile, bu ikili dosyanın paketlenmediği anlamına gelmez.
  • Bir ikili dosyanın hangi paketleyicinin kullanıldığını bulmaya çalışmak için bazı araçlar da kullanabilirsiniz:
  • PEiD
  • Exeinfo PE
  • Language 2000

Temel Tavsiyeler

  • Paketlenmiş ikili dosyayı IDA'da alttan yukarı doğru analiz etmeye başlayın ve yukarı doğru hareket edin. Paketleyici, paketlenmiş kodun çıkış yaptığı anda çıkar, bu nedenle paketleyicinin başlangıçta paketlenmiş kodun yürütülmesini paketlenmiş kodun yürütülmesine geçirme olasılığı düşüktür.
  • JMP'leri veya CALL'ları araştırın, kayıtlara veya bellek bölgelerine yönlendirin. Ayrıca, argümanları iten işlevleri ve bir adres yönü ve ardından retn çağıran işlevleri arayın, çünkü bu durumda işlevin dönüşü, çağrılan adresi yığın üzerine ittikten sonra çağırmadan önce çağırabilir.
  • VirtualAlloc üzerine bir kesme noktası koyun, çünkü bu, programın yazılabileceği bellek alanını ayırır. Fonksiyonu çalıştırdıktan sonra EAX içindeki değere ulaşmak için "kullanıcı koduna çalış" veya F8'i kullanın ve "bu adrese dökün". Paketlenmiş kodun kaydedileceği bölge olup olmadığını asla bilemezsiniz.
  • Argüman olarak "40" değeriyle VirtualAlloc kullanmak, Oku+Yaz+Çalıştır anlamına gelir (buraya kopyalanacak bir yürütme gerektiren kod).
  • Kodu açarken, aritmetik işlemlere ve memcopy veya VirtualAlloc gibi işlevlere çok sayıda çağrı bulmak normaldir. Yalnızca aritmetik işlemler gerçekleştiren ve belki de bazı memcopy işlemleri gerçekleştiren bir işlevde bulunursanız, işlevin sonunu (belki bir JMP veya bir kayda çağrı) bulmaya çalışın veya en azından son işlevi çağıran çağrıyı bulun ve kod ilginç değilse çalıştırın.
  • Kodu açarken, bir bellek bölgesini değiştirdiğinizde bellek bölgesi değişikliğinin paketlenmiş kodun başlangıcını gösterebileceğini unutmayın. Bir bellek bölgesini Process Hacker (işlem --> özellikler --> bellek) kullanarak kolayca dökümleyebilirsiniz.
  • Kodu açmaya çalışırken, zaten paketlenmemiş kodla çalışıp çalışmadığınızı bilmek (böylece sadece dökebilirsiniz) için ikili dosyanın dizelerini kontrol etmek iyi bir yoldur. Bir noktada bir sıçrama yaparsanız (belki bellek bölgesini değiştirirken) ve daha fazla dize eklendiğini fark ederseniz, o zaman paketlenmemiş kodla çalıştığınızı bilebilirsiniz.
    Ancak, paketleyicide zaten çok sayıda dize bulunuyorsa, "http" kelimesini içeren dize sayısına bakabilir ve bu sayının artıp artmadığını görebilirsiniz.
  • Bir bellek bölgesinden bir yürütülebilir dosyayı döktüğünüzde, bazı başlıkları PE-bear kullanarak düzeltebilirsiniz.
Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'ı desteklemenin diğer yolları: