27 Mart 2018 Salı

crackme0x00 crackliyoruz

merhaba arkadaslar,
reverse yeteneklerimizi gelistirmek hepimizin hakki degil mi?
bu sebeple (https://github.com/Maijin/Workshop2015/tree/master/IOLI-crackme) linkinden elde edebileceginiz crackme uygulamalarini kirmaya calisicaz.
hadi crackme0x00 ile baslayalim..

kullanacagim debugger 'i https://x64dbg.com/ adresinden edilebilirsiniz.

oncelikle uygulamamizi calistiralim bi degil mi?

evet uygulama benden sifre istedi ve bende test amacli test yazip gonderdim, fakat tabiki tutmadi:D

neyse uygulamayi debuggerimiza alalim.
debugger cok erken durdu, henuz ntdll in icindeyiz, bir kere oynat ugurcum (run tusu, play tusu) dedigimizde programin entry point'inden yerlestirmis oldugu breakpoint te tekrar duracaktir.


evet giris noktasinda durduk.

buraya kadar geldikten sonra aklimizda su deli sorular canlaniyor. 
- Uygulama sifresi uygulama icinde mi sakli yoksa network e erisim mi var?
- Uygulama sifresi dogrulugu kontrol u(string comparison) uygulama tarafindan mi yapiliyor yoksa bir api cagrisi mi var?

ben size soyleyeyim, network olayi yok, basit bir test uygulamasi cunku, gercek bi kanitim falan da yok hee yalnizca hislerime guveniyorum :D
ikinci soru icin ise uygulamanin import ve export ettigi dll ve cagrilara bakmayi uygun goruyorum
hemen cff explorer 'i acip, exe yi uzerine surukledigimizde soyle bir manzarayla karsilasmaktayiz.

evet exe dinamik olarak msvcrt.dll(MicroSoftVisualCRunTime) import etmis ve bu dll in strcmp isimli fonksiyonunu? bu bir isaret olabilir mi?

hemen debugger imiza gidip, strcmp i bulup breakpoint atiyoruz. denemeye deger degil mi?

breakpoint i ayarladiktan sonra oynat ugurcum diyoruz ve exe'ye sifre yaziyoruz.



evet arkadaslar, gozlerim yasardi, cunku breakpoint uygulamamizi durdurdu, tam da bekledigimiz gibi strcmp fonksiyonunda durdu(ulan baska breakpoint yok ki zaten, neyse :D)

strcmp in ikinci argumanina dikkat ettigimizde (mov ecx, ss:[esp+8]) ve bu adresi dump ta takip ettigimizde sifrenin bu oldugunu anliyoruz. 

ancak isimiz bitmedi, cunku bu uygulamayi herhangi bir sifre ile acilacak hale getirmeliyiz.
bunun icin strcmp i cagiran kod blogunu bulup, geri donusu kontrol eden yer ile ilgilenmeliyiz.
execute till retun diyoruz ve strcmp tan cikmasi ve crackme icinde strcmp i cagiran kod bloguna gitmesini bekliyoruz.
evet, asil zurnanin ottugu, kuslarin civildadigi bolume geldik,
arkadas strcmp cagrisindan sonra 
test eax, eax
je 40138A
demis,
yani diyor ki, eger strcmp 0 donduyse, 40138A a git ve Passwork Ok yazdir. He yok degilse, normal devam edeceginden Invalid Password yazdir ve sonlan.
eger burdaki je yi jne ye cevirirsek, yani 0 olmadigi durumda ziplatirsak, password korumasini asmis olacagiz, deneyip gorelim
je li satira cift tikladigimizda direk olarak assemble diyalogunu acik kodu editlememize izin veriyor.
burda jz yi jnz ye ceviriyoruz ve menu den Patch File... ya tikliyoruz.
evet diyor ki su adresteki degeri sununla degistiricem (jz ve jnz arasindaki kucuk fark :D)
patch file deyip, crackme0x00.ked.exe olarak kaydediyoruz.

test edelim gorelim.

evet umdugumuz gibi de oldu, sifre tahmin ettigimiz gibi 250382 cikti. ve patchledigimiz uygulama orjinal haline kiyasla yalnizca gercek sifre olan bu sifreyi kabul etmeyip, rastgele yazdigimiz herhangi biseyi kabul ediyor.

hayirli gunler bol reverseler :)


arkadaslar, resimler buyuk oldu, tam cozemedim bu isi, kucuk yapsan okunmaz buyuk yapinca sayfa boka sariyor :| simdilik idare edin, cozecem resim mevzusunu...

Hiç yorum yok:

Yorum Gönder