CO : B-Crk475.exe (plik z gatunku CrackMe) skad : ??? (moze bedzie na stonce Crackpl jak sie GustawKit zgodzi) czym : SoftICE
B-Crk475.exe napisane przez Bullet jest dosyc prostym programikiem i latwo je zlamac. Poczatkujacy moga miec problemy gdyz nie wywoluje ona zadnej z funkcji GetWindowTextA (W) oraz GetDlgItemTextA (W). Musimy skorzystac z funkcji HmemCpy. A wiec wpisujemy jakis serial np: 77776666, wchodzimy do SoftICE i zastawiamy pulapke:
:bpx hmemcpy
Wychodzimy klikamy Unlock i jestesmy w SI, naciskamy F11. Niewazne co mamy w Si wazne ze nasz serial powinien byc w pamieci ;)) Poszukajmy go:
s 30:0 l ffffffff '77776666'oczywiscie jak masz w init to co kiedy podawal Zomo:
INIT="lines 60; wd 22; wc 25; wr; code on; X;" => to ma byc w winice.dat od SI Pattern found at 0030:007A2D40 (007A2D40)sprawdzmy co jest pod tym adresem :
:d 7a2d40 0030:007A2D40 37 37 37 37 36 36 36 36-00 24 44 00 74 24 44 00 77776666.$D.t$D.
Czyli wszystko w porzadku wyglada to na to miejsce Moze byc jeszcze gdzies w pamieci, wiec nalezalo by to sprawdzic, by szukac dalej wciskasz :s, ale to nam nie bedzie potrzebne choc znalazlbys jeszcze kilka razy !!! Ustawmy pulapke na ten adres. Kiedy bedzie cosik z niego czytane to my od razu wskoczymy do miejsca w którym jest cosik z nim robione. Nie zawsze to bedzie od razu procka sprawdzajaca ale w naszym przypadku tak jest ;)) A wiec ustawiamy:
bpm 7a3d40i wylaczamy przerwanie na hmemcpy
:bd 0ctrl+d i jestesmy w procedurze sprawdzajacej:
015F:00403B4F 52 PUSH EDX 015F:00403B50 C1EA02 SHR EDX,02 015F:00403B53 7426 JZ 00403B7B 015F:00403B55 8B0E MOV ECX,[ESI] => !!! 015F:00403B57 8B1F MOV EBX,[EDI] => !!! 015F:00403B59 39D9 CMP ECX,EBX => !!! 015F:00403B5B 7558 JNZ 00403BB5 => !!! 015F:00403B5D 4A DEC EDX 015F:00403B5E 7415 JZ 00403B75 015F:00403B60 8B4E04 MOV ECX,[ESI+04] 015F:00403B63 8B5F04 MOV EBX,[EDI+04] 015F:00403B66 39D9 CMP ECX,EBX 015F:00403B68 754B JNZ 00403BB5 015F:00403B6A 83C608 ADD ESI,08 015F:00403B6D 83C708 ADD EDI,08
To tylko fragment ale nam wystarczy to co zaznaczylem znakami: "!!!" Zobaczmy co mamy w esi:
d esi 0167:007A2D40 37 37 37 37 36 36 36 36-00 24 44 00 74 24 44 00 77776666.$D.t$D. 0167:007A2D50 04 58 7A 00 8C 10 00 00-88 10 00 00 A4 09 00 00 .Xz.............
A wiec nasz serial ;))) W edi powinien wiec byc poprawny, sprawdzmy:
:d Edi 0167:0044093C 54 68 69 73 20 70 72 6F-67 72 61 6D 20 6D 75 73 This program mus 0167:0044094C 74 20 62 65 20 72 75 6E-20 75 6E 64 65 72 20 57 t be run under W 0167:0044095C 69 6E 33 32 00 00 00 00-53 8B D8 33 D2 8B 83 D8 in32....S..3....
Hmmm troche sie zdziwilem ale cóz widac ten który to tworzyl byl na tyle pomyslowy by .... no wlasnie ......by jako prawidlowy kod dac ten string, który zawiera sie "w kazdej" aplikacji pod Win32 o takiej samej lub podobnej tresci ;)) To moglo wielu zmylic !!! Sprawdzmy, kasujemy breakpointy
:bc *
Wychodzimy z SI, wpisujemy haslo "This program must be run under Win32" i fonetycznym 'vuala' konczymy sprawe z tym progsem. Hmm czy na pewno, pozostaje jeszcze RULEZ ;)) ale to juz pozostawiam na innego tutora !!!