This tutorial are coming from

Acid Cool 178 
written for
Hellforge / The Cracking Answer


r0m4n's Crackme 1 
Cracking in a diffrent way

 

Target

Program Crackme 1 by r0m4n 
Protection Name And Serial
Where to Download http://crackmes.cjb.net 
Date 5 December 2000
Skill Damet, still cracking....

Toolz

W32Dasm
OllyDbg
Download the tools from http://www.protools.cjb.net 


Essay

Hehe, intressed now huh ??

Well, as the title says, a driffrent way, and I guess that you never have used OllyDbg before.... well Here is you chance to get to now with the program.. I did use 1 week to get to now with the progam and I have the standard settings.. well here is the tasks...

Task 1 First Look 
Task 2 Patching
Task 3 Serial sniffing
Task 3 Trying to keygen

Task 1 First Look

Well, the first look at the crackme was nothing to say, I played with the crackme and got to now the compare routine...  If you have entred one fake serial then you will get one MessageBox that says something bad... Else you will get another MessageBox that says you did it :) And that's the MessageBox that WE WANT... 

Task 2 Patching

Well, disassemble the crackme in W32Dasm and you will find this string under "String Data References" Good Work Cracker !! " Just dubbleclick on it and you will end up here... 

:0042CE69 8B55FC                  mov edx, dword ptr [ebp-04]
:0042CE6C A110F74200              mov eax, dword ptr [0042F710]
:0042CE71 E85A6AFDFF              call 004038D0
:0042CE76 7516                    jne 0042CE8E        <-- If serial == NOT CORRECT then jump to the bad message, else ignore this jump.

* Possible StringData Ref from Code Obj ->"Good work, cracker!!!"
                                  |
:0042CE78 B8E0CE4200              mov eax, 0042CEE0
:0042CE7D E83AFCFFFF              call 0042CABC        <-- Show the good message

* Possible StringData Ref from Code Obj ->"Send the tut/patcher/keygen to "
                                        ->"r0m4n@flyhost.com"
                                  |
:0042CE82 B800CF4200              mov eax, 0042CF00
:0042CE87 E830FCFFFF              call 0042CABC        <-- Not important atm :)
:0042CE8C EB0A                    jmp 0042CE98

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0042CE76(C)                                        <-- IMPORTANT
|

* Possible StringData Ref from Code Obj ->"Incorrect!!!"
                                  |
:0042CE8E B83CCF4200              mov eax, 0042CF3C
:0042CE93 E824FCFFFF              call 0042CABC        <-- Show the bad message

Now, to patch thisone then just nop out the jump and it will accept all serials and names :D

Task 3 Serial Sniffing

well, now... Hold the crackme open in W32Dasm and open the crackme in OllyDbg.. I won't tell you how to use OllyDbg, cos it is easy..  You got some basic ideas on cracking and the debug in W32Dasm.. (BTW: LaZaRuS did write one good tut in the debug at W32Dasm goto http://www.Hellforge.org for reading it) Now, we now the the serial will be compared in the call at 0042CE71 so just press "CTRL + G" and you will get up one small box, fill in "0042CE71" in the box then you will end up at the call...  Hehe, coll huh ?? Now, If you will press F2 now for one breakpoint, and if you want to remove the breakpoint then press F2 another time and it will br removed. cool huh ?? well, make sure that you got one breakpoint at "0042CE71" where the call is... 

For a little selfh study, take a look in the screen, can you see some strings there ??? I bet that you can... I can :) You can also see what the registers contains and if the flags are set or not... Cool huh ??

Now back to the call.. Trace into the call by Right clicking and choose "Follow" at the menu. Now you have entred the Call,, finally but what the hell now ?  Now you will se this ( I have copied this from teh W32Dasm file, sorry but it was the best thing to do)

:004038D0 53                      push ebx
:004038D1 56                      push esi
:004038D2 57                      push edi            
:004038D3 89C6                    mov esi, eax        <-- moving the fake serial into EAX
:004038D5 89D7                    mov edi, edx        <-- Moving the real serial into EDX
:004038D7 39D0                    cmp eax, edx        <-- Comparing the serials

Now, what we want is to see what is in EDX and that is easy...  The therory is this...
We will start the crackme in OllyDbg
We will enter on our anme and one fakle serial.
We will accept it by pressing at the check button
When OllyDbg breaks at the call then we will trace intot eh call and see what EDX contains...

Well, goto Debug and choose Restart int he meny at OllyDbg. Now here is some hotkeys...

F9 Runt he program and break on breakpoints F5
F8 Step over the instruction F12
F7 Step Into F8 or T
CTRL + F2 Restart Program No Idea

Now, please remember this.. 
If you ahve restarted the program then run it and fill in you name and serial.    
REMEMBER: IT IS IMPORTANT THAT YOU DID SET ONE BREAKPOINT AT THE CALL WHERE THE SERIAL IS GETTING CHECKED !!!!
Now, as name then did I use AcidCool and 2951 as the serial.. 
Not's it's time to press the  "check" button and you will be back in OllyDbg,,, just as good old Soft Ice...

Right click and follow the call.. Now when you have done it so will you be 

:004038D0 53                      push ebx            <-- You will be here
:004038D1 56                      push esi
:004038D2 57                      push edi            
:004038D3 89C6                    mov esi, eax        <-- moving the fake serial into EAX
:004038D5 89D7                    mov edi, edx        <-- Moving the real serial into EDX
:004038D7 39D0                    cmp eax, edx        <-- Comparing the serials

 Press F8 to step over the instructions and when you are at the compare routine the you will see something as you can see in the cracking.jpg file that i have included..

there can you see that my serial was "Rc1-420AcidCoolC00L" 

well, I tested my serial and it worked so fine as hell :) Another crackme solved with new skiils in my fucking brawin :))

Task4 Trying to keygen

0042CDF0   . 55             PUSH EBP        <-- I did set one breakpoint in here....
0042CDF1   . 8BEC           MOV EBP,ESP
0042CDF3   . 6A 00          PUSH 0
0042CDF5   . 53             PUSH EBX
0042CDF6   . 8BD8           MOV EBX,EAX
0042CDF8   . 33C0           XOR EAX,EAX
0042CDFA   . 55             PUSH EBP
0042CDFB   . 68 AECE4200    PUSH crackme1.0042CEAE
0042CE00   . 64:FF30        PUSH DWORD PTR FS:[EAX]
0042CE03   . 64:8920        MOV DWORD PTR FS:[EAX],ESP
0042CE06   . 8D55 FC        LEA EDX,DWORD PTR SS:[EBP-4]
0042CE09   . 8B83 E4010000  MOV EAX,DWORD PTR DS:[EBX+1E4]
0042CE0F   . E8 CCCFFEFF    CALL crackme1.00419DE0
0042CE14   . 8B55 FC        MOV EDX,DWORD PTR SS:[EBP-4]
0042CE17   . B8 10F74200    MOV EAX,crackme1.0042F710        <-- EAX = Serial
0042CE1C   . E8 7767FDFF    CALL crackme1.00403598            
0042CE21   . 8D55 FC        LEA EDX,DWORD PTR SS:[EBP-4]
0042CE24   . 8B83 E0010000  MOV EAX,DWORD PTR DS:[EBX+1E0]
0042CE2A   . E8 B1CFFEFF    CALL crackme1.00419DE0
0042CE2F   . 8B55 FC        MOV EDX,DWORD PTR SS:[EBP-4]
0042CE32   . 8BC3           MOV EAX,EBX                       <-- EAX = Name
0042CE34   . 8B08           MOV ECX,DWORD PTR DS:[EAX]
0042CE36   . FF51 18        CALL DWORD PTR DS:[ECX+18]
0042CE39   . 68 C4CE4200    PUSH crackme1.0042CEC4                   ;  ASCII "420"
0042CE3E   . FF73 08        PUSH DWORD PTR DS:[EBX+8]
0042CE41   . 68 D0CE4200    PUSH crackme1.0042CED0                   ;  ASCII "C00L"
0042CE46   . B8 18F74200    MOV EAX,crackme1.0042F718
0042CE4B   . BA 03000000    MOV EDX,3
0042CE50   . E8 2B6AFDFF    CALL crackme1.00403880            <-- Here is something happening, IT takes the Name and sets 420 infront of Acid and sets C00L at the end of acit so it will be 420AcidC00L
0042CE55   . 8D45 FC        LEA EAX,DWORD PTR SS:[EBP-4]
0042CE58   . 8B0D 18F74200  MOV ECX,DWORD PTR DS:[42F718]
0042CE5E   . 8B15 C8E84200  MOV EDX,DWORD PTR DS:[42E8C8]            ;  crackme1.0042CDE8
0042CE64   . E8 A369FDFF    CALL crackme1.0040380C            <-- And to teh final, here is teh crackme taking Rc1- and addint that infront of 420AcidC00L so it will be Rc1-420AcidC00L and that's the serial aclculation :)
0042CE69   . 8B55 FC        MOV EDX,DWORD PTR SS:[EBP-4]
0042CE6C   . A1 10F74200    MOV EAX,DWORD PTR DS:[42F710]
0042CE71   . E8 5A6AFDFF    CALL crackme1.004038D0                   ;  Important Call
0042CE76   . 75 16          JNZ SHORT crackme1.0042CE8E
0042CE78   . B8 E0CE4200    MOV EAX,crackme1.0042CEE0                ;  ASCII "Good work, cracker!!!"
0042CE7D   . E8 3AFCFFFF    CALL crackme1.0042CABC
0042CE82   . B8 00CF4200    MOV EAX,crackme1.0042CF00                ;  ASCII "Send the tut/patcher/keygen to r0m4n@flyhost.com"
0042CE87   . E8 30FCFFFF    CALL crackme1.0042CABC
0042CE8C   . EB 0A          JMP SHORT crackme1.0042CE98
0042CE8E   > B8 3CCF4200    MOV EAX,crackme1.0042CF3C                ;  ASCII "Incorrect!!!"
0042CE93   . E8 24FCFFFF    CALL crackme1.0042CABC

 

Serial ==

Rc1-420+NAME+C00L
If Name == FuckYou then serial ==Rc1-420FuckYouC00L

Ending

Hint for everyone, tru to see this yourselfh... That is the best experiense for you, I did it and I could see is ad maybe you also can see.. This Crackme are getting ranking 11 of 10 possible coz it is the firstone that i ever have keygennes so fucking good and i didn't use SoftICe but I used something what can replace SoftIce :)

 

Greetings

LaZaRuS, Mercution, Borna Janes, ManKind, Eddie Van Camper, Analyst, KoRnFLeX, Eternal_Bliss, Potsmoke, DiABLO. Torn@do, ^AlX^ , AC|D, Dark Wolf, Marton, NaRRoW, Subzonic, SEV, all in Hellforge,  TCA and all the other i have forgotten


2000/01 Resistant..
Made by Acid_Cool_178 / [TCA]
acid_cool_178@hotmail.com