Program : URL Adress Book v.2.06 Tools : Wdasm32 Cel : crack Tips : zasada znacznika zarejestrowania
W przypadku tego programu podstawowe sposoby zawodza. Pulapki na pobieranie tekstu z okienka nic nie daja a HmemCpy powtarza sie zbyt wiele razy. Po zdekompilowaniu go w Wdasm32 mozemy zauwazyc, ze niektóre zasoby programu nie sa uwzglednione w listingu.
Ciekawy tekst po uruchomieniu programu pojawia sie w pasku tytulowym "URL Adress Book Lite Version". Poszukujac tego fragmentu otrzymamy taki oto fragment kodu :
:004542BE 55 push ebp
:004542BF 68C7474500 push 004547C7
:004542C4 64FF30 push dword ptr fs:[eax]
:004542C7 648920 mov dword ptr fs:[eax], esp
:004542CA 803DC1AC450001 cmp byte ptr [0045ACC1], 01
:004542D1 750F jne 004542E2 <--- jak nie 1 to skok Lite
:004542D3 8D45F0 lea eax, dword ptr [ebp-10]
* Possible StringData Ref from Code Obj ->"URL Adress Book "
|
:004542D6 BAE0474500 mov edx, 004547E0
:004542DB E86CF6FAFF call 0040394C
:004542E0 EB0D jmp 004542EF
* Referenced by a (U)nconditional or (C)onditional Jump at Adress:
|:004542D1(C)
|
:004542E2 8D45F0 lea eax, dword ptr [ebp-10]
* Possible StringData Ref from Code Obj ->"URL Adress Book Lite Version"
|
:004542E5 BAFC474500 mov edx, 004547FC
:004542EA E85DF6FAFF call 0040394C
Widzimy tu ze program w zaleznosci od zarejestrowania co innego pisze w pasku tytulowym. Co wazne w tym fragmencie, ano to ze jezeli pod adresem 0045ACC1 mamy 1 to program jest pelny czyli prawdopodobnie zarejestrowany. Nalezy teraz znalezc miejsce gdzie modyfikowana jest wartosc w komórce 0045ACC1. Przegladajac zdisasemblowany kod zauwazysz, ze adres ten jest kilka razy wykorzystywany (modyfikowany lub sprawdzany) czyli jest znacznikiem zarejestrowania programu.
Po krótkiej analizie znajdziemy taki fragment kodu :
:00455DB1 E8FEDAFAFF call 004038B4 :00455DB6 C605C1AC450000 mov byte ptr [0045ACC1], 00 :00455DBD B201 mov dl, 01
Jest to miejsce gdzie program wpisuje 0 pod adres 0045ACC1, czyli robi go niezarejestrowanym. Zmodyfikujmy tak aby wpisywal 01 i program bedzie dzialal jak zarejestrowany. Jest to jeden z wielu sposobów zcrackowania programu. W wielu przypadkach jakis adres jest znacznikiem zarejestrowania i jego modyfikacja pozwala nam na zcrackowanie programu.