Unpacking binaries
Last updated
Last updated
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
string eksikliği: Paketlenmiş ikililerin neredeyse hiç string içermediğini bulmak yaygındır.
Birçok kullanılmayan string: Ayrıca, bir kötü amaçlı yazılım bazı ticari paketleyiciler kullanıyorsa, çapraz referanssız birçok string bulmak yaygındır. Bu stringler mevcut olsa bile, bu durum ikilinin paketlenmediği anlamına gelmez.
Bir ikilinin hangi paketleyici ile paketlendiğini bulmak için bazı araçlar kullanabilirsiniz:
Paketlenmiş ikiliyi en alttan başlayarak IDA'da analiz etmeye başlayın ve yukarı doğru ilerleyin. Paketleyiciler, açılmış kod çıkınca çıkış yapar, bu nedenle paketleyicinin açılmış koda başlangıçta yürütme geçirmesi olası değildir.
Kayıtlar veya bellek bölgelerine JMP veya CALL arayın. Ayrıca, argümanlar ve bir adres yönlendirmesi iten fonksiyonlar arayın ve ardından retn
çağırın, çünkü bu durumda fonksiyonun dönüşü, yığına itilen adresi çağırabilir.
VirtualAlloc
üzerinde bir kesme noktası koyun, çünkü bu, programın açılmış kod yazabileceği bellek alanı ayırır. "Kullanıcı koduna çalıştır" veya F8 kullanarak fonksiyonu çalıştırdıktan sonra EAX içindeki değere ulaşın ve "dump'taki o adresi takip edin". Açılmış kodun kaydedileceği bölge olup olmadığını asla bilemezsiniz.
VirtualAlloc
'un "40" değeri argümanı, Okuma+Yazma+Çalıştırma anlamına gelir (buraya kopyalanacak bazı çalıştırılması gereken kodlar olacak).
Kod açma sırasında birçok çağrı ile aritmetik işlemler ve memcopy
veya Virtual
Alloc
gibi fonksiyonlar bulmak normaldir. Eğer yalnızca aritmetik işlemler gerçekleştiren ve belki de bazı memcopy
yapan bir fonksiyonda iseniz, öneri fonksiyonun sonunu bulmaya çalışmaktır (belki bir JMP veya bazı kayıtlarla çağrı) veya en azından son fonksiyona yapılan çağrıya kadar ilerleyin çünkü kod ilginç değildir.
Kod açma sırasında bellek bölgesini değiştirdiğinizde not alın, çünkü bir bellek bölgesi değişikliği açma kodunun başlangıcını gösterebilir. Process Hacker kullanarak bir bellek bölgesini kolayca dökebilirsiniz (işlem --> özellikler --> bellek).
Kod açmaya çalışırken, açılmış kodla çalışıp çalışmadığınızı bilmenin iyi bir yolu, ikili dosyanın stringlerini kontrol etmektir. Eğer bir noktada bir atlama yaparsanız (belki bellek bölgesini değiştirerek) ve çok daha fazla string eklendiğini fark ederseniz, o zaman açılmış kodla çalıştığınızı bilebilirsiniz. Ancak, eğer paketleyici zaten birçok string içeriyorsa, "http" kelimesini içeren string sayısını görebilir ve bu sayının artıp artmadığını kontrol edebilirsiniz.
Bir bellek bölgesinden bir yürütülebilir dosyayı dökerken, bazı başlıkları PE-bear kullanarak düzeltebilirsiniz.
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)