Prokon

amois

Program Url: www.prokon.com
Program Tipi: Yapi analizi ve dizayni
     Araçlar:
 SoftICE, Icedump, IDA, caspr1011.zip
Basit (  )  Orta (x )  Zor (x )  Pro ( )

Başlangıç

Insaat muhendisleri icin hazirlanmis, yapi analiz ve dizayn programi. 
Yazı

Calistirdiginizda prolock directory sini olusturuyor. Buraya sifrelenmis 2 dosya aciyor (code.bin ve code.log). gecen zaman suresini code.bin dosyasindan okuyarak anliyor. Zamani bir kez ileri alip programi calistirdiginizda surenin doldugunu bildiriyor. Artik bundan sonra yapacak birseyiniz yok. Cunku sifrelenmis dosya surenin doldugu seklinde yeniden olusturuluyor. Zamani geri de alsaniz program aktif olarak calismiyor. En azindan bende boyle oldu. Prokon32.exe dosyasi aspack 2.1 ile paketlenmis ve anti-debugging tuzaklari ile dolu. Yani manual olarak real entry point bulmak acayip zor. Sagolsun diger arkadaslar aspack 2.1 icin unpack yapabilen kucuk programlar yazmislar. Unpack islemi icin bunlari kullanacagiz. Sayilari 4 veya 5 olan bu programlarin sadece bir tanesi tam olarak unpack yapabildi. Alexey Solodovnikov tarafindan hazirlanmis caspr1011.zip dosyasini internetten bulmaniz gerekiyor (Mr. Stop kendi sitesine ekler mi bilemem). Programi kullanarak prokon32.exe dosyamizi unpack edip softice loader ile giriselim. Goreceginiz gibi entry point te softice break yapamadi. Frogice da bir isinize yaramayacak. Procdump ile entry point degistirmek yerine icedump un en son versiyonu olan 6.0.2.3 u internet ten bulup yukleyin. Evet, simdi loader entry point te programi break etti. Win32asm ile unpack edilen bu exe yi incelemeniz birsey kazandirmayacak. Cunku string reference ler yok. Gerci bu is icin de internet te bir patch dosyasi var, ama o da tam olarak basarili degil.

Install ettikten sonra tarihi ileri almaniz (10 sene) birseyi degistirmeyecek. Cunku hata verip bize gerekli olan code.bin dosyasini olusturmayacak. Normal tarihe donup calistirdiginizda "Prokon activated for actual period of 2 months" deyip code.bin ve code.log dosyalari bu tarihe gore olusacak. IDA ile unpack ettigimiz dosyayi acin. Menuden а search а sequence of bytes а 32 20 6D 6F 6E 74 68 73 (2 Months demek) 00486463 adresinde goreceksiniz. Biraz yukari ciktigimizda, 00486427 sub_48620C adresine gelecegiz. Demek ki programi activate eden sub_48620C bolumu. Cift tiklarsak; 0048620C sub_48620C proc near ; CODE XREF: sub_4865A8+1AE Bu bolum sub_4865A8+1AE den refere edilmis. Buna da cift tiklarsak; 00486756 call sub_48620C Bize gerekli dosyalari saglayacak olan cagri 00486756 da duruyor. Bir sekilde buraya ulasmamiz gerek. Softice loader ile yukledigimizde;

0049E6E9                 mov     ebp, esp
0049E6EB                 add     esp, 0FFFFFFF4h
0049E6EE                 mov     eax, 49E340h
0049E6F3                 call    sub_40141C
0049E6F8                 mov     eax, ds:@Forms@Application ; Forms::Application
0049E6FD                 mov     eax, [eax]
0049E6FF                 call    sub_401658		ß [F8] yapalim
0049E704                 call    sub_49DE6C
...
00401658                 jmp     dword ptr ds:4C65B0h ß JMP 00486756 olacak

Buldugumuz ilk jump komutunu kendi istedigimiz yere Softice in icinden yonlendirelim (baska bir adres de olabilir, onemi yok). Simdi oldu, istedigimiz ileri bir tarihe gore code.bin yaratildi. Gerci bu islemden sonra Windows hata verip dursa da onemi yok, resetleyin. Tarihi normale alip programi calistiralim. Evet, hata verdi. Cunku, code.bin dosyasindaki tarihten daha gerideyiz. Bunu kontrol eden rutini bulmamiz gerek. Artik programin calisan ve calismayan versiyonuna sahibiz. Tarihi ileri aldigimizda (jmp 486756 yaptigimizdaki) program calisiyor. Normale aldigimizda ise calismiyor. Bu gibi durumlarda %99 calisan yontemi kullanacagiz. Iki versiyonu karsilastiracagiz. Softice da iken code window u [wc] ile kapatin. Boylelikle [F10] ile gezindiginiz yerlerdeki kodlari bir dosyaya kaydedebilirsiniz. (softice loader menuden  save softice history as). 

Oncelikle hatayi veren CALL u bulmaya calisin.

Ilk olarak 0049E72D CALL 00401660 da hata verecek. Daha sonraki denemenizde [F8] ile bu CALL a giregiz. Ikinci olarak 4005AA51 CALL [EDI+2C] de hata verecek. Yavas yavas hedefe dogru yaklasacaksiniz. 40052E80, 400531FD, 4962EA, 49572C. Biraz zaman ve sabir istese de kesin calisacak bir yontemdir (internet te okudugum kadari ile bu yontemin adi bile var). Kodlarin arasinda kaybolmamaya calisin. Eger bir donguye girdiyseniz, olasi sicranacak yerlere breakpoint koyup yola devam edin (0049552A). Umitsizlige kapilmayin, tecrube ile bu yontemde hizlanabilirsiniz. Calisan versiyon ile calismayan versiyonun "save history text" lerini Excel e almanizi oneririm. 2 kolona bunlari yerlestirin ve JZ, JNZ leri kontrol edin. Gozunuz otomatik olarak farki hemen yakalayacaktir (text leri excel in kolonlarina copy, paste yontemi ile yerlestirmek kolay olacaktir).

Nihayet, 00495555 adresinde programin JUMP yapmasi gerektigini bulacaksiniz. Bunu duzelttikten sonra 004956F5 de NOP yapmasi gerektigini bulup isimizi tamamlayacagiz.

Hatayi veren adrese calisan versiyonun da ugradigindan emin olun. Eger ugramiyorsa, daha geride yollari ayrilmistir. Oradan devam edin. Ilk basta zorlansaniz da sonradan hizlanacaksiniz. Bircok programi bu yontemle kirabilirsiniz. Zor da olsa mutlu sona ulastik. Programin icinden de activate bolumu var. Dogru password girilirse program demo olmaktan cikiyor. Ama girilen password de zaman sinirli. Bizim yontemimizde zaman siniri yok, ama icerigi itibari ile biraz tuhaflik var. Olsun, bir program bircok sekilde crack edilebilir.

Bu yazida, Code dan cok akil verdim galiba. Ama samimi olarak soyluyorum, bu yontem cok etkilidir. Hamaliyesi cok olsa da, tecrube ile nerelere dalmak gerektigini kavrayacaksiniz. Umarim birseyler ogrenebildiniz.

 
Son Notlar

Bir programı kullanarak para kazanıyorsanız, programı satın alın.