First Crackme

Wollte auch mal ein Crackme machen.
Wird für euch wohl nicht so schwer sein, aber was solls^^
 
ID: 123789456

PASS: 963741852

;). Ich glaub das kriegt man hin. Also kein tut.
 
Also gut:

Wir laden das Teil in OllyDbg. Und machen rechtsklick -> Search for ->All intermodular Calls.
Wir finden : MSVBVM60.__vbaStrCmp

Mit F2 setzen wir dort ein Breakpoint und starten mit F9.

Nun tippen wir im Crackme :"id" bei ID rein und "pass" bei Pass rein, damit wir beide später unterscheiden können.

Wir sind hier :

Code:
00409571   .  FFD3          CALL EBX                                                    ;  MSVBVM60.__vbaStrCmp; <&MSVBVM60.__vbaStrCmp>

Wir gucken ins Register-Fenster und entdecken unser "pass" und 963741852.
Also müsste doch das Passwort 963741852 sein.

So, wir gucken etwas weiter runter und sehen:

00409584 . FFD3 CALL EBX ; MSVBVM60.__vbaStrCmp

Da wird wieder etwas verglichen. Also setzen wir da mit F2 ein Breakpoint.
Mit F9. springen wir dahin.
Wir sehen im Register-Fenster 3 Werte:

EAX :id
ECX : 123789456
EDX : 963741852

Welches wird nun mit welchem verglichen ? Wir gucken ein paar Zeilen über uns und sehen, dass zuvor EAX und ECX gepusht wurde. Also wird unser eingetipptes id mit 123789456 verglichen. Das muss unsere ID sein.

Crackme nochmal gestartet beide Werte probiert und wir kommen zu richtig.

Patchen ist natürlich noch einfacher.
Dazu NOPen wir einfach :


004095E1 /74 49 JE SHORT Crackme_.0040962C
 
Eleganter finde ich, einfach:

004095E1 74 49 JE SHORT Crackme_.0040962C

zu

004095E1 75 49 JNZ SHORT Crackme_.0040962C

ändern. Und dann gibste ein, was auch immer du willst. :-)

rushjo

P.S. Hier nicht notwendig, aber ein kurzer Blick mit "PEiD" oder Ähnlichem, lohnt sich meistens auch. :-)
P.P.S. Hier ist nochmal die vollständige Code-Section, in der beide Vergleiche stattfinden, wobei der "pass" zuerst verglichen wird und danach erst die "id".
hier findet der vergleich der werte statt:

00409566 . 8B55 D4 MOV EDX,DWORD PTR SS:[EBP-2C]
00409569 . 8B1D 50104000 MOV EBX,DWORD PTR DS:[<&MSVBVM60.__vbaSt>; MSVBVM60.__vbaStrCmp
0040956F . 51 PUSH ECX
00409570 . 52 PUSH EDX
00409571 . FFD3 CALL EBX ; <&MSVBVM60.__vbaStrCmp>
00409573 . 8B4D E0 MOV ECX,DWORD PTR SS:[EBP-20]
00409576 . 8BF0 MOV ESI,EAX
00409578 . 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18]
0040957B . F7DE NEG ESI
0040957D . 1BF6 SBB ESI,ESI
0040957F . 50 PUSH EAX

--> einfach auf die register achten:
 
Zurück
Oben