anonuser23532
Kıdemli Üye
- 9 Ara 2017
- 2,602
- 12
Patch : Bu kavram normalde hatalı çalışan kodun düzeltilmesi demektir.
Fakat biz burada hatasız çalışan kodu istediğmiz şekilde düzenleme anlamı ile kullanacağız.
: Kullanılan Programlar :
Scanner / Detect It Easy (Die)
Debugger / x32dbg
CrackMe Orjinal Link İçin Tıklayın
Programımızı bir taratalım bakalım yolumuza taş koyan bir durum var mı ?
Hayır , C++ ile yazılmış basit bir uygulama herhangi bir koruması bulunmuyor.
Şimdi Patch işlemine girişmek için kod bilgisi gereklidir.
Kullanacağımız debugger(dnSpy'ın da debuggerı var onunla karıştırılmaması için) işlemci üzerinde çalıştığı için assembly dili hakkında temel bilgiye sahip olsak yeterlidir.
Jump Statementlerimiz bu şekilde
Hedef Programımızı x32dbg ile başlatalım.
Direkt Sürükle-Bırak yapabiliriz veya sol üstten File > Open ile de seçebilirsiniz.
Programı bir kere startladığımızda EntryPointte duracaktır. (F9)
Şimdi istediğimiz düzenleme şu şekilde olacak
Lisans sorgulama kısmındaki sorgu işlemini tam tersine çevirerek veya direkt atlatarak lisans sorgu işlemine hiç sokmayacağız ve Valid Serial ' ı verdireceğiz.
Programın lisans kısmını bulmak için bir string araması yapmamız gerekli.
Sağ Tık > Search For > All Modules > String References
Yapalım ve açılacak ekrandan hedef string'e gidelim.
İşte hedef string değerini bulduk ; "Congrats! This license is valid!"
İki kere tıklayalım
Ve bizi buraya attığını göreceksiniz.
Hemen üstüne baktığımızda 3 tane sorgu işlemi gerçekleşiyor.
JNE : Jump If Not Equal (Eşit Değilse Atla)
JBE : Jump If Below or Equal (Küçük veya Eşitse Atla)
JAE : Jump If Above or Equal (Büyük veya Eşitse Atla)
Burada Patch işlemi ile istediğimiz değere ulaşmanın iki yolu var (Bu ders için)
1) Tam Tersine Çevirme
2) Koşulsuz Atlatma
TAM TERSİNE ÇEVİRME
JNE eşit değilse atla olduğuna göre tam tersi eşitse atla olacak.
JBE küçük veya eşitse atla olduğuna göre tam tersi eşit değilse atla olacak.
JAE büyük veya eşitse atla olduğuna göre tam tersi eşit değilse atla olacak.
Şimdi gelelim bunları x32dbg üzerinde yazmaya.
Düzenlemek istediğimiz kod satırına bir kere sol tıklıyoruz ve space tuşuna basıyoruz.
JNE için düzenleme işlemi :
JBE ve JAE için düzenleme işlemi :
Son Halleri :
KOŞULSUZ ATLATMA
Koşulsuz atlatma için JMP statementini kullanacağız.
Belirlediğimiz adrese direkt atlamasını sağlayacağız.
Düzenlemek istediğimiz kod satırına sol tıklayıp space ile aynı işlemi yapacağız.
Fakat bu sefer hepsine aynı işlemi yapmamıza gerek yok.
Ve bu sefer sadece bir harf değişikliği yaparak işin içinden kurtulamıyoruz. )
Atlamasını istediğimiz noktayı bulalım.
Atlamasını istediğimiz nokta = Hedef String
Hedef String' e
Sağ tık > Copy > Address
Yapalım.
Daha sonrasında ilk sorgu ifademize gelelim.
Space ' e basalım ve kodları şu şekilde düzenleyelim.
JMP 0XADRES
Şimdi bunları yaptıktan sonra son olarak kaydetmemiz lazım.
Şimdi programımızı açıp rastgele değer verelim.
Mutlu Son )