Tersine mühendislik, var olan bir ürünün veya yazılımın iç yapısını çözerek neye göre yapıldığını, nasıl çalıştığını ve nasıl oluşturulduğunu anlamayı amaçlayan bir işlemdir. Bu yöntem, ürün geliştirme sürecinde sorunları çözmek, iyileştirmeler yapmak veya rakiplerin ürünlerini analiz etmek için kullanılabilir. Unpack işlemi ise, ürünün veya yazılımın sıkıştırılmış dosyalarını çözerek içerisindeki bilgileri ortaya çıkarmak için kullanılan bir tersine mühendislik yöntemidir. Bu sayede, ürün veya yazılımın nasıl oluşturulduğunu anlamak daha kolay hale gelir ve geliştirme sürecinde daha verimli kararlar alınabilir.
Tersine Mühendislik 2 [Unpack İşlemi]
Tersine Mühendislik serisine devam ediyoruz. İlk bölümde “Tersine Mühendislik 1 [Serial Bulma & Patch]” başlıklı konuda temel kavramları ve basit bir lisans bulma işlemini anlatmıştık. Sırada unpack ismini verdiğimiz, paketleme işlemini nasıl çözebiliriz? Bunu inceleyeceğiz.
Upack Nedir?
Sorusunun cevabı için bir önceki makalemizi inceleyebilirsiniz. Unpack işlemi manuel veya araçlar ile yapılmakta. Şimdilik araçlar ile yapılan unpack işleminden bahsedeceğiz. Manuel unpack işlemi daha uzun ve uğraş gerektiren işlemdir.
Unpack Ne için Gereklidir?
Unpack yapmamızın sebebi program içerisine gömülmüş olan stringleri ve fonksiyonları görebilmek. Program üzerinde paketleme var iken debug edip ilgili yeri bulmamız neredeyse mümkün değildir. Örneğin program içerisine gizlenmiş bir serial kodu paketleyiciden geçtiğinde açıkça görünmeyecektir. Üç ayrı şifreleyici kullanarak hazırladığım dosyayı, her birini ayrı ayrı araçlar ile unpack edeceğiz.
Hedefler:
- Aspack ile şifrelenmiş dosya.
- Themida ile şifrelenmiş dosya.
- UPX ile şifrelenmiş dosya.
- Unpack edilmesi gereken dosyalarımız.
Görsel Anlatım
1- Aspack ile şifrelenmiş dosyayı Aspack Stripper V2.12 programı ile unpack ediyoruz. Unpack butonuna basıp dosyayı seçmemiz yeterli.(protector : ASPack(2.12-2.XX)) Aspack unpack sırasında kullanılan program
2- Themida manuel unpack edilmesi gereken bir paketleyici bu yüzden videolu anlatım gerektiriyor. (protector : Unopix(0.94))
3- En kolay unpack işlemi upx üzerinde yapılıyor. Sebebi ise unpack edecek bir çok araç geliştirilmiş. Hatta bazı debugger programları açarken siz farkında olmadan debug ederek açmakta. Upx ile paketleniş dosyayı unpack ederken kullandığımız program.
Sonuç
Paketlenmiş bir dosyanın string bölümü ile unpack edilmiş diğer dosyanın string bölümü bu şekilde görülüyor. Ayrıca şifrelenmiş dosyada fonksiyonlar ve fonksiyon isimleri de farklı olacaktır. Ollydbg içerisinde görünen stringler . (packed/unpacked)
Genel Olarak
Tersine mühendislik yapmak istediğimiz dosyayı ilk başta PE Analyzer adı verilen çeşitli programlarla hangi dilde yazıldığını derleyicisi ve paketleyicisi gibi bilgilere ulaşıyoruz. Ben Detect İt Easy (DİE) kullanıyorum. Ardından şifreleme var ise unpack işlemi için şifrelemenin türüne göre araştırma yapıyoruz. Örneğin 1. dosyamızda Aspack ile şifrelenmiş dosya mevcuttu. Protector yani paketleyicisi ismi ve versiyonu ile araştırma yapılır. İlk olarak araçlara göz atarız eğer araç yok ise manuel yöntemlere başvururuz. Manuel işlem için belli bilgi düzeyine erişmek gerekiyor. Manuel anlatımlara ilerleyen konularda bahsedeceğim.