B-Crk475.exe - Cos z gatunku CrackMe by AsmGoth

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 7a3d40 
i wylaczamy przerwanie na hmemcpy
:bd 0
ctrl+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 !!!