Reverse Engineering - Unpacking

Artık günümüzde programları korumak adına packer kullanmak zorunlu hale gelmiştir.Packerlar verileri şifreleme,self-modifying,pe headerda değişiklikler yapma,api redirect,stolen bytes ve crc check gibi yöntemleri kullanırlar.Packerlar sadece tecrübesiz crackerlarda işe yararlar.Packerların memorye programın tamamını açmak zorunda olması,kullandıkları teknikler birbirine benzemektedir.

Packerlar programı packledikten sonra tekrar dosyayı hafızada açmaya yarayacak kodların olduğu bölümün başlangıcını entry point(başlangıç noktası) olarak belirlerler ve program akışı başlar.Döngüler ,şifrelenen verilerin tekrar matematiksel işlemlerle eski haline getirilmesi,IAT’ın(Import adress table) yaratılması ve memory’de harici bir program ile erişilip verilerde değişiklik yapılıp yapılmadığının kontrolü vs.

Üstte anlattığım bazı kısımlar yabancı gelmiş olabilir.O yüzden geçmişte yazdığım dökümanlara ve PE Header hakkında bilgi sahibi olmanızı tavsiye ederim.

Packlenmiş bir program debugger ile açtığımızda anlamsız stringler ve nitelik taşımayan kod toplulukları görürüz.Bunun sebebi packerın self modifying yöntemiyle oraları matematiksel işlemlerden geçirerek eski haline sokacak olmasıdır.Self-modifying programın kendi üstünde değişiklikler yapmasıdır.Yani programı packlediğimiz zaman şifrelenir ve şifrelenmiş veriler kaydedilir bunun yanında şifrelenmiş verileri çözecek kodda dosyaya eklenir.

Piyasada kullanılan aspack vb yaygın packerlar güvensizdir.Çünkü bunlara unpackerlar yazılmış ve haklarında birçok döküman bulunmaktadır.Tecrübesiz bir cracker bunları edinir ve unpack edip işine devam etmesi zor olmaz.Bunun için kaliteli fakat hakkında fazla bilgi bulamayacağınız packerları tercih etmelisiniz.Konumuz unpacking olduğu için reverse engineering’e karşı alınabilecek önlemler isimli dökümanımı referans göstererek buraları es geçiyorum.

Packerlar kısmen birbirinden farklıdırlar.Çünkü programın işleyişine zarar vermemek için belirli bir çizgide devam etmek zorundadırlar.Bu yüzden packerlara karşı genel yöntemler türemiştir.Öncelikle packlenmiş bir dosya ile karşılaştığımızda ilk yapmamız gereken boş yere vakit kaybetmemek için bir unpacker aramaktır.Onuda bulamadıysanız o packerı nasıl unpack edebileceğimizle ilgili döküman ,ollydbg scripti en kısa yoldan aradığımız kilit noktalara nasıl ulaşabiliriz vs.O da olmadıysa kendimizle baş başa kalırız.Bu gibi durumlarda ne yapmamızı bilmemiz gerek.Çünkü her zaman birilerine bağımlı kalmak lamerliktır.Bunu vakitten kazanmak amacıyla yapıyoruz sadece.

Kendi yazdığım sadece formdan oluşan örnek programı aspack ve pe compact gibi önde gelen packerların şu anki son sürümleri (Aspack 2.12,PE Compact 2.78) ile packledim.Unpacking işlemini gerçekleştirirken aralarda genel olan farklı unpacking tekniklerinden de bahsedeceğim.

Dökümanda Kullanılan Programları ve Ollydbg Dump Pluginini Tahribat.Com Dosya Arşivinden veya buraya tıklayarak indirebilirsiniz...

Gerekenler

Ollydbg

Ollydbg dump plugin

Import Reconstructor (IAT’ı(Import adress table) düzeltmek için ihtiyacımız önemli araç)

LordPE

Opsiyonel

Peid veya Rdg packer detector (Programın hangi packerla packlendiğini tespit eden kullanışlı iki program rdgyi tavsiye ederim.Fakat ben formlara kolaylık olsun diye hangi packerı kullandığımı yazdım)

Öncelikle ollydbgda programı açıyoruz ve gözatıyoruz.

Tarih:
Hit: 4944
Yazar: FireX

Taglar: reverse engineering - unpacking


Yorumlar


Siftahı yapan siz olun
Yorum yapabilmek için üye girişi yapmalısınız.