Yalnız Mesajı Göster

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi

Eski 07-01-2010   #16
Şengül Şirin
Varsayılan

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi



3137 Tarihi ileriye alıp tüm işlemlerin tekrarlanması

Şimdi yapılması gereken 2 bir call flow logu hazırlamaktır, ancak bu sefer sistemin tarihi ileriye alınmalıdır ki, "Deneme Süreniz Sona Erdi" mesajı görülebilsin Bu, programımızın 'GetSystemTime' fonksiyonundan sonra fakat Nag ekranı çıkmadan önce farklı bir yol izlemesine neden olacaktır

3138 İki Log dosyasının karşılaştırılması

Tüm adımlar tekrarlandıktan ve 2 log dosyası (örn:asa2txt) kaydedildikten sonra iki log dosyasını karşılaştırmak gerekir Burada iyi korunulduğu söylenen bir Microsoft programını kullanarak ortaya çıkan 2 tane örnek log dosyası üzerinde açıklama yapılacaktır

3139 İki log dosyasının farklılaştığı ilk noktanın bulunması


Dikkat edilirse her iki log dosyası da 015F:3000ADC1 adresine kadar aynıdır İlk dosyada, bu adresteki komut atlama yapmıyor, fakat ikinci dosyada aynı komut atlamayı yaptırıyor Bu, o noktadaki EAX in değerinin sistem zamanına bağlı olarak aldığı değişiklikten kaynaklanıyor Aşağıdaki kod satırları incelenmelidir:

LEA EAX,[ESI-01] Bu komut, ESI-01’deki byte’a bakıp değeri EAX’e koyuyor
CMP EAX,05 Bu komut, EAX’teki değerin 5’e eşit olup olmadığına bakıyor
JA 3000AE00 Eğer değer 5'ten büyükse 300AE00 adresine atla komutu


31310 Dosyada değişiklikler yapılması

JA komutunun atlama yapmaması için dosya değiştirilmelidir Bu bir çok yolla yapılabilir:
Basit ve ucuz olan yol; 015F:3000ADC1 adresindeki `77 3D` değerlerini `90 90` olarak değiştirerek "JA 3000AE00" komutunu nop lamaktır (No Operation) Bu yol çoğu zaman işe yarasa da, doğru yol 3 byte uzunluğunda olan 'LEA EAX,[ESI-01]', yine 3 byte uzunluğunda olan 'CMP EAX,05' ve 2 byte uzunluğunda olan `JA` (3 asm kodu için toplam 8 byte etti) komutlarını; 5 byte uzunluğundaki 'MOV EAX,00000005' ve birer byte uzunluklarındaki 3 `NOP` komutuyla değiştirmek olacaktır Bu, EAX kaydının herzaman doğru değere sahip olmasını ve aynı sayıda byte'ın değiştirilmiş olmasınısağlayacaktır

31311 Programı yamalamak (Patching olayı)

Artık yapılması gereken, programı istenilen bir Hex editörüne yükleyerek log dosyasında LEA, CMP ve JA komutları için bulunan byte gurubunu arayıp yamamak olacaktır
Bu örnek için;
'8D46FF83F805773D' yi 'B805000000909090' ile değiştirir
B805000000 = MOV EAX,05
90 = NOP
"Call Flow Metodu" olarak anılan bu cracking yönteminin, 2 ayrı yol izlenen bir çok olayda da kullanılabilme imkanı vardır
Örnek :
- CRC rutinlerini kırmak için (Program modifiye edilmiş/edilmemiş) ;
- Dongle korumasının (Dongle plugged in/not plugged in) kaldırılması ;
- Üç deneme ve password soru alanının dışındasın (Sizin bir fonksiyonu sadece belli bir sayıda kullanabilmenizi sağlayan programlar) şeklindeki kısıtlamaların kaldırılması için kullanılır

__________________
Arkadaşlar, efendiler ve ey millet, iyi biliniz ki, Türkiye Cumhuriyeti şeyhler, dervişler, müritler, meczuplar memleketi olamaz En doğru, en hakiki tarikat, medeniyet tarikatıdır
Alıntı Yaparak Cevapla