Reverse Engineering Sorularınız
-
Ok daha detaylı anlatalım;
Öncelikle string tablosunda biraz araştırma yaparsak programcısının ayıptır söylemesi salak olduğunu göreceğiz :))
Çünkü alttaki şekilde gördüğünüz üzere stratejik bir bölgeye "Please do not pirate this software" vb şeyler yazarak yalvarmış.Neyse onu geçtik.Ayrıca "regname" ve "regkey" olmak üzere stratejik önem taşıyan isimleride görebilirsin.Yada ctrl+n ile registryleri açan apilerin çağrıldığı yere breakpoint koyarsın falan.Yine orayı bulursun.
http://img525.imageshack.us/img525/8316/untitled3rh4.jpg
Kısa süreli bir araştırmadan sonra registry değerlerinin olup olmadığı yeri buluyoruz.Regname ve regkeyin olduğu yerlere breakpoint koyup izliyoruz ya o şekilde.İşte hemen altta resimde gözükeceği üzere orada bir zıplama noktası var onu nopla kaldıracağız ki anahtarlar varolmasa bile programı kaydedilmiş sanarak yolculuğuna devam etsin.
http://img525.imageshack.us/img525/7305/untitledty8.jpg
Daha sonra zıplama noktasının altındaki prosedüre giriyoruz.Amacımız en altlarda yeralan regname ve regkeyin olduğu yere ulaşmak.Burada bizi prosedürün en altına atan bir sürü zıplama noktası var.Hesaplar kitaplar yapılıyor.Uzuncana bölüm.Burada birçok zıplama noktasını nop yapacağız.Adresleri yazarsak;
http://img523.imageshack.us/img523/6739/untitled2qn5.jpg
004C87E9
004C8864
004C887B
004C88C2
004C8938
004C8A3D
004C8A70
004C8A7A
Buralara nop koyarak oraları direk geçebilirsin.Yada daha farklı şekildede direk zıplarsın falan noplara gerek kalmadan vs.Fakat hem buraya yazıp hemde adım adım ilerlediğim için geçtiğim adresleri buraya yazdım.Programın kararlılığı açısındanda daha sağlıklı..
Şimdi devam edersek prosedürün en altlarına doğru regname ve regkeyi göreceksin program akışı onların üstünden geçtikten sonra ilk aşama tamamlanıyor.Program oraya göre regname ve regname kombinasyonunun tutup tutmadığını karşılaştırıyor.
Diğer aşamaya gelirsek.Regname ve regkey değerleri registrye orayı geçince boş olarak yaratılıyor.Programın birçok yerinde farklı farklı olarak bu regname regkey kombinasyonunun tutup tutmadığına değilde verilerin olup olmadığına bakılıyor.Program kapanırken nag screen çıkması.Yeni proje yaratınca imza bırakması vsvs bir sürü şey daha var patchlenecek.O kadar şeyle uğraşmaya gerek kalmadan.O değerleri doldurursan sorunsuzca programı full haline sokabilirsin.Çalışmalarında başarılar.. -
Hocam çok sağolasın :) Bu mesajdan sonra bende biraz araştırdım yine ! Bi arkdaşta şöyle yapmış :
Bu adreste : 004CA68E bildiğin gibi serial hesaplaması ve kontrolleri yapılıyor ya
bu call a girip ilk satırdan itibaren;
ORJ :
004C7DA8 55 PUSH EBP
004C7DA9 8BEC MOV EBP,ESP
004C7DAB 33C9 XOR ECX,ECXPATCH :
004C7DA8 33C0 XOR EAX,EAX
004C7DAA 40 INC EAX
004C7DAB C3 RETN
004C7DAC 90 NOPSONRADA GİDİP : 004C81F7 75 0D JNZ SHORT Webexe.004C8206 satırını
004C81F7 74 0D JE SHORT Webexe.004C8206 PATCH YAPMIŞ !
NASIL BULDUĞUNU SORDUĞUMDA SÖYLEMİYOR :( sadece stack sağolsun diyor :(
varmıdır bi fikrin ? gerçektende denedim register oluyor :(
Bu adres ipucun olsu dedi !
004C8216 BA F08E4C00 MOV EDX,Webexe.004C8EF0 ; ASCII "RegOpenKeyExA"
Ama buraya nasıl geldindiğini ? hangi stackta nasıl gördüğünü bi türlü söylemedi ?
-
Ato sen registryle ilgili sordun.Bende o şekilde cevapladım.Seri numara deseydin ona bakardık.Fakat o söylediğin şekilde program register olmuyor.Sadece register oldu diye mesaj penceresi çıkıyor.Aç kapat göreceksin.Programı incelerken orayı bende görmüştüm.Program biraz komplike.Registry konusuna gelirsek ben registry konusunda sana gereken açıklamayı üstte yaptım.
-
Teşekkür ederim hocam ! Senin anlatımınla programın karakteristik özelliğini anladım...
-
mrb firex hocam yine bir crackme ve bu meretin sanırım bir debugger koruması war :) yine p-code ile derlenmiş bu arada vb' dilinde programa nasil debugger koruması koyulur?hocam onceki ugrastıgım crcakme'de hala duruyor ilgili kişi dosyada bir sorun olamdıgını şirrenin daha uzun oldugunu soyledi
selametle
-
mascoder bunu yazdı:
-----------------------------mrb firex hocam yine bir crackme ve bu meretin sanırım bir debugger koruması war :) yine p-code ile derlenmiş bu arada vb' dilinde programa nasil debugger koruması koyulur?hocam onceki ugrastıgım crcakme'de hala duruyor ilgili kişi dosyada bir sorun olamdıgını şirrenin daha uzun oldugunu soyledi
selametle
-----------------------------
VB Decompiler'da açıp debugger kontrolünün yapıldığı yerleri,fonksiyonların çağrıldığı yerleri kaldır.Debugger kontrolü için isdebuggerpresent,outputdebugstring,zwsetinformationthread apilerinden faydalanabilirsin.Önceki crackmede terslik var.Kullanıcı adı,şifreyi aldığın adresleri yolla adama. -
iligli yerleri sildim :) peki şimdi bu haliyle programı nasil kaydeticem debugger ile açmak için
-
Değişiklikleri hex editörüyle yapıp kaydedeceksin.Hangi opcodelar nelerle değişecekse vs.Ondan sonrada debuggerda açarsın.P-Code ile ilgili dökümanımda bundan bahsetmiştim.
-
kusura bakmayın firex hocam cahillime verin ama sormak zorundayım :( p-code ile ilgli makalenizde hex editor ile yaptıgnız mantıgı tam kavrayamadım cunku bazı teknik kelimeleri bilmiyorum debugger koruması kaldırmak için olly üstündeki scripti kullanmaya calısıyorum crackme calısıyor yanlız olly'de surekli yanıp sonuyor script sanki sn'de 1 calısıyor ekrana cıkıyor debıgger korumasını boyle aşmam mumkun sanırım bunu nasil yaparim script ile?Birde eski konustugumz crackme iligli kişi benim yanlış yaptıgımı soyluyor şifre uzun bişeymiş bir ben sorunlu diyomusum :) şifre dogru olunca tebrikler yazıomus dediginiz gibi biraz uzun oldu sanırım :( bayadır ugrasıyorum olmadı :( kolay gelsin
-
mascoder bunu yazdı:
-----------------------------
kusura bakmayın firex hocam cahillime verin ama sormak zorundayım :( p-code ile ilgli makalenizde hex editor ile yaptıgnız mantıgı tam kavrayamadım cunku bazı teknik kelimeleri bilmiyorum debugger koruması kaldırmak için olly üstündeki scripti kullanmaya calısıyorum crackme calısıyor yanlız olly'de surekli yanıp sonuyor script sanki sn'de 1 calısıyor ekrana cıkıyor debıgger korumasını boyle aşmam mumkun sanırım bunu nasil yaparim script ile?Birde eski konustugumz crackme iligli kişi benim yanlış yaptıgımı soyluyor şifre uzun bişeymiş bir ben sorunlu diyomusum :) şifre dogru olunca tebrikler yazıomus dediginiz gibi biraz uzun oldu sanırım :( bayadır ugrasıyorum olmadı :( kolay gelsin
-----------------------------
Ollydbg ile p-code üstünde çalışılmaz. .Net dillerinde olduğu gibi.Çünkü bir ara dil var ve bunu yorumlayan yorumlaycı.WKTVBDE bulacaksın dökümanda debuggerın genel kullanımından bahsetmiştim.O söylediğin crackmeye bende baktım.Debugger kontrolü vs korumayla ilgili bölümler ayrı prosedürler içerisine alınmış.Bu da işimizi daha da kolaylaştırıyor.Prosedürü sonlandıran komutun opcodunu alıp prosedürün hemen başladığı komutun ardına yazacaksın bu şekilde oradaki komutlara hiç uğramadan dönecek.
http://rapidshare.com/files/43342539/yagvbdp3.zip.html VB Decompiler pro ile daha detaylı inceleyebilir.Hex editörüne
gerek kalmadn patch yapabilirsin.