Gayet de açık yazmışım galiba
Bu anlattıklarımı başka anlatan var mı bilmiyorum, önceden beri deneme yanılma yoluyla .vs öğrendim..
Örnek olarak geçen gün burada paylaştığım Cr.ackMe(KırBeni) programını ele alalım.
(
Bağlantıları görmek için lütfen
Giriş Yap
)TextBox'a doğru şifreyi girince Tebrikler! yazısını alıcaz.
Eğer girdiğimiz şifre yanlış ise böyle bir hata karşımıza çıkıyor.
Şimdi Cheat Engine programını açalım, Process'i seçip "Memory Viewer" butonuna basalım.
Böyle bir ekran çıkacak, Sağ tıklayalım ve "Go to address"e basalım
MessageBoxW ile işimiz var şuanda. Bakalım yanlış şifreyi girdiğimiz zaman hatayı karşımıza çıkaran bölgeyi bulabilecek miyiz?
MessageBoxW Addressine gittiğimizde oraya Breakpoint bırakmamız lazım
Bu şekilde gözükecek
Şimdi bir şifre sallayalım (örn:123) ve gir butonuna tıklayalım. Böyle bir tepki almamız lazım
Bu programın tam uyarıyı verdiği esnadı programı askıya alır. Şimdi sağ alttaki kısmı incelememiz lazım.
(Burası biraz pratik istiyor, işin mantığı o esnada Call yapılan funclar)
Buradan dördüncüyü seçiyoruz
(1,2,3 ve 4'e göz attım ve 4.nün kestirme bir şekilde istediğim yere ulaştıracağını fark ettim.
Ama siz alıştırma yapmak için 1,2,3,4 demeden hepsinin fonksiyonunun başladığı yere breakpoint atıp gözlemlemeniz sizin yararınıza olur.)
Karşımıza çıkan bölge
Biraz yukarı kaydıralım
Ben buraya bakınca şunu görüyorum burada bir istek belirtilmiş.
Şimdi önümüzde iki yol var!
1.Yol: Uyarı verilen kısmı engelleriz ve bu sayede yanlış şifreyi yazsak bile Tebrikler! yazısını görebiliriz ya da..
2.Yol: Register'lara bakarak şifreyi öğrenebiliriz..
1.Yol :
>>> olan kısım yazdığın şifreyi doğru şifre ile karşılaştırdıktan sonra Tebrikler yazısını göstereceği yolu ya da hata vereceğini yolu seçiyor.
Bu kısma sağ tıklayıp "Replace with code..." dersek orayı nop'layacak ve seçtiği yolu manipüle etmiş olacağız.
Yani Tebrikler! yazısını zor yoldan göstereceğiz.
6502 Assembly:
E8 1887B664 - call System.String::op_Equality
89 45 E8 - mov [ebp-18],eax
0FB6 45 E8 - movzx eax,byte ptr [ebp-18]
89 45 F0 - mov [ebp-10],eax
83 7D F0 00 - cmp dword ptr [ebp-10],00 { 0 }
>>>74 19 - je CrackMe.Form1::button1_Click+C1
8B 45 E0 - mov eax,[ebp-20]
8B 88 50010000 - mov ecx,[eax+00000150]
BA 01000000 - mov edx,00000001 { 1 }
39 09 - cmp [ecx],ecx
E8 1BE0FFFF - call 02C50798
90 - nop
90 - nop
EB 24 - jmp CrackMe.Form1::button1_Click+E5
90 - nop
8B 45 E0 - mov eax,[ebp-20]
8B 88 50010000 - mov ecx,[eax+00000150]
33 D2 - xor edx,edx
39 09 - cmp [ecx],ecx
E8 04E0FFFF - call 02C50798
90 - nop
8B 0D 6023E603 - mov ecx,[03E62360] { [02ECB504] }
E8 643FB85F - call System.Windows.Forms.MessageBox::Show
89 45 E4 - mov [ebp-1C],eax
2.Yol
İstek gelirse anatırım
Ekli dosyalar
Son düzenleme: