Reverse Engineering - Hedef Bölge

erhaba arkadaşlar bu yazımda Reverse Engineeringde hedef bölgeye ulaşma yöntemlerinden bahsedeceğim.Hedef bölge olarak kasdettiğimiz yerler; Programın register olup olmayacağına karar verildiği noktalar,program açıldığında daha önce register edilmişmi diye kontrol eden ve ona göre kısıtlamaları kaldıran noktalar  vb.Bu yöntemlerle birçok programda ulaşmamız gereken yerlere en az ıskalamayla konumlanabiliriz.Biraz bilgi ve kafamızı çalıştırmak programın korunuş şekline göre belirli sürede istediğimiz yere ulaşmamızı sağlayacak.Debugger ile programı açtığımız zaman binlerce satır assembly kodu görürüz.Bizim işimize yarayacak kısım bu binlerce satırın arasındaki tek satır kod olabilir.Sadece tek zıplama noktası program durumunu belirleyebilir.Peki ona nasıl ulaşacağız?

Programına göre ihtimaller,karmaşalar artabilir.Packlenmenin dışında(Packli dosyanın üstünde unpack etmeden çalışmak iyi bir fikir değildir) programcının kendine özel programa dahil ettiği koruma yöntemleri olabilir.Bunlarda işin uzamasına sebep olur ve crackerın caymasına sebep olabilir.Örneğin programda self-modifying (kendi üzerinde değişlik yapan programlar) yöntemi kullanılıyorsa programı dikkatli bir şekilde takip etmemiz gerekir.Bu tür programlarda kilit noktaları bulmak zaman alabilir.Örneğin programa bir döngü dahil edilir ve bu döngü daha önceden şifrelenmiş verileri çeşitli işlemlerden geçirerek eski normal haline sokar.Orası ile işimiz tamamlandığında tekrar şifrelenir ve program akışı devam eder.Self-modifying’den daha sonraki yazımda ayrıntılı olarak bahsedeceğim için şimdilik geçiyorum.

Program yazarken bazı sınırlar,kurallar,ölçütler vardır.Bunların dışına çıkamayız.Bu sebeple de genel olarak programlar derleyicisine bağlı olarak birbirine benzemektedirler.Bu tür işlere biraz aşina olduktan sonra bir programı debugger ile açtığımızda hangi derleyici ile derlendiğini assembly kodlarına bakarak anlayabiliriz.

Eğer programı yazan adamda bunları biliyorsa işimiz dahada zorlaşacaktır.Fakat azimle ve sabırla mutlaka üstesinden gelinebilir.Korunmasına bağlı olarak saatler,günler alabilir.Örneğin starforce koruma sisteminin aşılması epey zaman almıştı.

Şimdi işe koyulalım.Ben daha önceden keygenleri anlatırken Visual C++ ile kısa bir program yazmıştım.Aynı programı burada da kullanmayı uygun gördüm.Programı buradan indirebilirsiniz.

Anlatacağım yöntemler her zamanki gibi Ollydbg temel alınarak anlatılacaktır.Son zamanların en gelişmiş ve kullanışlı debuggerı.Kullanmasını bilirseniz gerçekten çok işe yaradığını göreceksiniz.Diğer ilkel Reverse Engineering araçlarıyla sürünmenin anlamı yok.

Öncelikle programı Ollydbg ile açıyoruz ve kısaca gözatıyoruz ve yöntemlerimizi sıralamaya başlıyoruz.Unutmayınki bunlar genel olarak kullanılan yöntemler.Programın çalışma mantığına yada sizin edindiğiniz tecrübelerle kendinize ait yöntemlerde bulabilirsiniz.

İlk olarak string arama yöntemiyle başlıyoruz.Kodların olduğu pencerede sağ tıklıyoruz ve Search for->All referenced strings’e basıyor ve karşımıza çıkan string tablosunda arama yaptırıyoruz.Örneğin örnek programda seri numara doğru olmayınca “invalid serial number” yazıyor.Bunu karşımıza çıkan string tablosunda aratırsak programı packlemediğim için kolayca bulabilecek ve üstüne çift tıklayarak o bölgeye konumlanmış olacaksınız.Ondan sonra tek yapacağınız zıplama noktasında değişiklik yapmak olacak.

Birde dipnot olarak bir uyarıda bulanayım.String tablosu karşımıza çıktığında en aşağılarda bir yerde olacağız.Bu yüzden string tablosunda en üste çıkıp en üstlerden birisini seçip,büyük küçük harf duyarlılığını kaldırıp aratın.Yoksa sonuca doğru yapsanızda ulaşamazsınız. 
Tarih:
Hit: 3277
Yazar: FireX

Taglar: reverse engineering - hedef bölge


Yorumlar


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