(BEST VIEWED WITH WORDWRAP ENABLED & FONT= COURIER , SIZE =10)

         @$@$#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@@$@ @#$#$@
        @@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@  @#$#$#$@
         @@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#@#$@ @#$#$@
          @#$@                             
          @#$@       @$@$@$@$@ @$@$@ $@$@$ @$@$@ $@$@$   @#@#@#@#@@ @$@$@ $@$@$ @$#$#$#@
          @#$@      @#$#$#$#$@@ @#$#$#$#$#$ @#$#$#$#$#$ @$#$#$#$#@@@ @#$#$#$#$#$ @#$#$@
          @#$@    @ @#@#@#@#@#@ @#$@$#$#@@@ @#$@$#$#@@@ @#@@    @#$@ @#$@$#$#@@@  @$#@
          @#$@#$#$@ @#@#   #@#@ @#$@   @@@  @#$@   @@@  @$@     @#$@ @#$@   @@@   @$#@
          @#$@@#@#@ @#@#@#@#@#@ @#$@   @@   @#$@   @@         @#@#$@ @#$@   @@    @$#@   
          @#$@#$#$@ @$@$@$@$@$@ @#$@        @#$@         @@#@@#@#@#@ @#$@         @$#@
          @#$@    @ @$@#        @#$@        @#$@        @#$#$#$#$#$@ @#$@         @$#@
          @#$@      @$@#        @#$@        @#$@        @#$@    @#$@ @#$@         @$#@
          @#$@      @#@#@#@#@#@ @#$@        @#$@        @#$@#$#$#$#@ @#$@         @$#@
          @#$#@     @$@$@$@$@$@ @#$#@       @#$#@       @#$@#@#@#@#@ @#$#@       @#$#$@
        @#@#@#@#@    @#@#@#@#@ @#@#@#@     @#@#@#@       @#@#@#@#@# @#@#@#@     @$#$#$#@


                                      :-)---> ARTeam <---(-:
                              Visit:-http://cracking.accessroot.com
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$                     $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$  Perfect Keylogger  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$         1.5         $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@@@@@@@@@@
@@@@@@@@@@@@@              AUTHOR            :   FERRARI                          @@@@@@@@@@@@@ 
@@@       @@@              PROTECTION        :   Serial                           @@@       @@@   @@ ferrari @@              TARGET FILE       :   bpk.exe                          @@ ferrari @@ 
@@@       @@@              TARGET URL        :   http://www.blazingtools.com      @@@       @@@   @@@@@@@@@@@@@              OPERATING SYSTEM  :   WINDOWS ALL                      @@@@@@@@@@@@@   @@@@@@@@@@@@@              RELEASE DATE      :   15.01.2004                       @@@@@@@@@@@@@
@@@@@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@                                TOOLS USED & TARGET SOFTWARE                                 @
@                                =============================                                @
@                                                                                             @
@ OllyDbg            :- http://grinders.withernsea.com/tools/odbg110b1.rar                    @
@ Hide Debugger      :- http://grinders.withernsea.com/tools/hideDebugger.rar                 @
@ Perfect Keylogger  :- http://grinders.withernsea.com/tools/i_bpk2003.exe                    @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
===============================================================================================
               Patching Perfect Keylogger to accept any registration name and key.
===============================================================================================
First make a backup of bpk.exe

Now copy hideDebugger.dll into Plugins folder of Ollydbg. Open Ollydbg configuration settings file with notepad-->Scroll down to "[History]" and enter the correct path to "Plugin path="

Now load bpk.exe in Olly and hit F9 to run the program. Bring up the registration box and enter any name and serial. I enter ferrari as name and 1111-1111-1111-1111 as reg code. Now wait don't click OK yet. Go back to Olly and hit Ctrl N. Scroll down till u find 'GetDlgItemTextA' .Select it-->right click-->Toggle Breakpoint on import.
Now back to registration window click Ok.Olly breaks here.This is the USER32 module.

77D6274F > 55               PUSH EBP<--------Breaks here
77D62750   8BEC             MOV EBP,ESP
77D62752   FF75 0C          PUSH DWORD PTR SS:[EBP+C]
77D62755   FF75 08          PUSH DWORD PTR SS:[EBP+8]
77D62758   E8 4B63FEFF      CALL USER32.GetDlgItem
77D6275D   85C0             TEST EAX,EAX
77D6275F   0F84 148F0200    JE USER32.77D8B679

Now just keep pressing F8 till u get out of USER32 and enter bpk.exe code below. Now scroll down till 004141D5


0041410D  |. 80BD 68FFFFFF >CMP BYTE PTR SS:[EBP-98],0<----Till u get here.
00414114  |. 75 18          JNZ SHORT bpk.0041412E
00414116  |. 6A 40          PUSH 40
00414118  |. 68 B46F4400    PUSH bpk.00446FB4                ;  ASCII "Attention!"
0041411D  |. 68 9C6F4400    PUSH bpk.00446F9C                ;  ASCII "Please enter your name!"
00414122  |. 8BCF           MOV ECX,EDI
00414124  |. E8 75F40100    CALL <JMP.&MFC42.#4224>
00414129  |. E9 FA000000    JMP bpk.00414228
0041412E  |> 56             PUSH ESI
0041412F  |. 6A 0A          PUSH 0A
00414131  |. 5E             POP ESI
00414132  |. 8D45 E8        LEA EAX,DWORD PTR SS:[EBP-18]
00414135  |. 56             PUSH ESI
00414136  |. 50             PUSH EAX
00414137  |. 68 DAD60000    PUSH 0D6DA
0041413C  |. 8BCF           MOV ECX,EDI
0041413E  |. E8 B1F20100    CALL <JMP.&MFC42.#3098>
00414143  |. 8D45 D0        LEA EAX,DWORD PTR SS:[EBP-30]
00414146  |. 56             PUSH ESI
00414147  |. 50             PUSH EAX
00414148  |. 68 DBD60000    PUSH 0D6DB
0041414D  |. 8BCF           MOV ECX,EDI
0041414F  |. E8 A0F20100    CALL <JMP.&MFC42.#3098>
00414154  |. 8D45 DC        LEA EAX,DWORD PTR SS:[EBP-24]
00414157  |. 56             PUSH ESI
00414158  |. 50             PUSH EAX
00414159  |. 68 DCD60000    PUSH 0D6DC
0041415E  |. 8BCF           MOV ECX,EDI
00414160  |. E8 8FF20100    CALL <JMP.&MFC42.#3098>
00414165  |. 8D45 F4        LEA EAX,DWORD PTR SS:[EBP-C]
00414168  |. 56             PUSH ESI
00414169  |. 50             PUSH EAX
0041416A  |. 68 DDD60000    PUSH 0D6DD
0041416F  |. 8BCF           MOV ECX,EDI
00414171  |. E8 7EF20100    CALL <JMP.&MFC42.#3098>
00414176  |. 8D45 E8        LEA EAX,DWORD PTR SS:[EBP-18]
00414179  |. 50             PUSH EAX                         ; /String2
0041417A  |. 8D45 9C        LEA EAX,DWORD PTR SS:[EBP-64]    ; |
0041417D  |. 50             PUSH EAX                         ; |String1
0041417E  |. FF15 10814300  CALL DWORD PTR DS:[<&KERNEL32.ls>; \lstrcpyA
00414184  |. 8B35 44814300  MOV ESI,DWORD PTR DS:[<&KERNEL32>;  kernel32.lstrcatA
0041418A  |. 8D45 D0        LEA EAX,DWORD PTR SS:[EBP-30]
0041418D  |. 50             PUSH EAX                         ; /StringToAdd
0041418E  |. 8D45 9C        LEA EAX,DWORD PTR SS:[EBP-64]    ; |
00414191  |. 50             PUSH EAX                         ; |ConcatString
00414192  |. FFD6           CALL ESI                         ; \lstrcatA
00414194  |. 8D45 DC        LEA EAX,DWORD PTR SS:[EBP-24]
00414197  |. 50             PUSH EAX                         ; /StringToAdd
00414198  |. 8D45 9C        LEA EAX,DWORD PTR SS:[EBP-64]    ; |
0041419B  |. 50             PUSH EAX                         ; |ConcatString
0041419C  |. FFD6           CALL ESI                         ; \lstrcatA
0041419E  |. 8D45 F4        LEA EAX,DWORD PTR SS:[EBP-C]
004141A1  |. 50             PUSH EAX                         ; /StringToAdd
004141A2  |. 8D45 9C        LEA EAX,DWORD PTR SS:[EBP-64]    ; |
004141A5  |. 50             PUSH EAX                         ; |ConcatString
004141A6  |. FFD6           CALL ESI                         ; \lstrcatA
004141A8  |. 8D85 34FFFFFF  LEA EAX,DWORD PTR SS:[EBP-CC]
004141AE  |. 50             PUSH EAX
004141AF  |. 8D85 68FFFFFF  LEA EAX,DWORD PTR SS:[EBP-98]
004141B5  |. 68 00B84300    PUSH bpk.0043B800                ;  ASCII "_r <&~<1-Z2[l5,^"
004141BA  |. 50             PUSH EAX
004141BB  |. E8 61FEFFFF    CALL bpk.00414021
004141C0  |. 83C4 0C        ADD ESP,0C
004141C3  |. 8D45 9C        LEA EAX,DWORD PTR SS:[EBP-64]
004141C6  |. 50             PUSH EAX                         ; /String2
004141C7  |. 8D85 34FFFFFF  LEA EAX,DWORD PTR SS:[EBP-CC]    ; |
004141CD  |. 50             PUSH EAX                         ; |String1
004141CE  |. FF15 1C814300  CALL DWORD PTR DS:[<&KERNEL32.ls>; \lstrcmpiA
004141D4  |. 5E             POP ESI
004141D5  |. 85C0           TEST EAX,EAX
004141D7  |. 6A 40          PUSH 40
004141D9  |. 75 31          JNZ SHORT bpk.0041420C
004141DB  |. 68 8C6F4400    PUSH bpk.00446F8C                ;  ASCII "Registration"
004141E0  |. 68 486F4400    PUSH bpk.00446F48                ;  ASCII "Registration succeeded. Thank you for choosing Perfect Keylogger!"
004141E5  |. 8BCF           MOV ECX,EDI
004141E7  |. E8 B2F30100    CALL <JMP.&MFC42.#4224>
004141EC  |. 8D85 68FFFFFF  LEA EAX,DWORD PTR SS:[EBP-98]
004141F2  |. 8D4F 64        LEA ECX,DWORD PTR DS:[EDI+64]
004141F5  |. 50             PUSH EAX
004141F6  |. E8 87EE0100    CALL <JMP.&MFC42.#860>
004141FB  |. 8D45 9C        LEA EAX,DWORD PTR SS:[EBP-64]
004141FE  |. 8D4F 60        LEA ECX,DWORD PTR DS:[EDI+60]
00414201  |. 50             PUSH EAX
00414202  |. E8 7BEE0100    CALL <JMP.&MFC42.#860>
00414207  |. 6A 01          PUSH 1
00414209  |. 58             POP EAX
0041420A  |. EB 1E          JMP SHORT bpk.0041422A
0041420C  |> 68 346F4400    PUSH bpk.00446F34                ;  ASCII "Registration error"
00414211  |. 68 E06E4400    PUSH bpk.00446EE0                ;  ASCII "Registration code or user name is invalid. Please check all fields and try again!"


Now what happens is if the name and serial u entered is correct which is compared at 004141CE, string 1 holds the serial u entered and string 2 holds the correct serial. 
if valid, then at 004141D9, jump is not taken and we go to 004141DB which is our good message. 
If its invalid   jump is taken to 0041420C and we get the bad message. 
Now if u change this (Ctrl E)
004141D5  |. 85C0           TEST EAX,EAX

to

004141D5  |. 33C0           XOR EAX,EAX
the flag is set, EAX==0, and the jump is always not taken to 0041420C and we alwyas jump to our good message at 004141DB .So change the TEST to XOR :-) . if u save (refer last paragraph of this tut) the changes to bpk.exe and run it and enter the reg details and hit OK, u will get our good message but every time u start the program u have to enter the reg info again n again :-( So now what???
 The reason is the fake serial u entered is stored in the registry and the next time u run the program it checks the registry and compares the fake serial with the correct one and if not correct prompts u to enter the reg info again. you may wonder how i know that?? 

Now goto the below address,
004141BB  |. E8 61FEFFFF    CALL bpk.00414021
 select it, hit enter and land here

00414021  /$ 55             PUSH EBP
00414022  |. 8BEC           MOV EBP,ESP
00414024  |. 51             PUSH ECX
00414025  |. 51             PUSH ECX
00414026  |. 53             PUSH EBX
00414027  |. 56             PUSH ESI
00414028  |. FF75 0C        PUSH DWORD PTR SS:[EBP+C] ; /String
0041402B  |. 8B35 B8804300  MOV ESI,DWORD PTR DS:[<&K>; |kernel32.lstrlenA
00414031  |. FFD6           CALL ESI                  ; \lstrlenA
00414033  |. FF75 08        PUSH DWORD PTR SS:[EBP+8] ; /String
00414036  |. 8BD8           MOV EBX,EAX               ; |
00414038  |. 895D FC        MOV DWORD PTR SS:[EBP-4],>; |
0041403B  |. FFD6           CALL ESI                  ; \lstrlenA
0041403D  |. 8BF0           MOV ESI,EAX
0041403F  |. 85F6           TEST ESI,ESI
00414041  |. 8975 F8        MOV DWORD PTR SS:[EBP-8],>
00414044  |. 75 08          JNZ SHORT bpk.0041404E
00414046  |. 8B45 10        MOV EAX,DWORD PTR SS:[EBP>
00414049  |. 8020 00        AND BYTE PTR DS:[EAX],0
0041404C  |. EB 4E          JMP SHORT bpk.0041409C
0041404E  |> 57             PUSH EDI
0041404F  |. 8B7D 10        MOV EDI,DWORD PTR SS:[EBP>
00414052  |. FF75 0C        PUSH DWORD PTR SS:[EBP+C] ; /String2
00414055  |. 57             PUSH EDI                  ; |String1
00414056  |. FF15 10814300  CALL DWORD PTR DS:[<&KERN>; \lstrcpyA
0041405C  |. 3BF3           CMP ESI,EBX
0041405E  |. 8975 0C        MOV DWORD PTR SS:[EBP+C],>
00414061  |. 7F 03          JG SHORT bpk.00414066
00414063  |. 895D 0C        MOV DWORD PTR SS:[EBP+C],>
00414066  |> 33F6           XOR ESI,ESI
00414068  |. 3975 0C        CMP DWORD PTR SS:[EBP+C],>
0041406B  |. 7E 2C          JLE SHORT bpk.00414099
0041406D  |> 8BC6           /MOV EAX,ESI<-------------------|
0041406F  |. 6A 19          |PUSH 19                        |
00414071  |. 99             |CDQ                            |
00414072  |. F77D FC        |IDIV DWORD PTR SS:[EBP-4>      |
00414075  |. 8BC6           |MOV EAX,ESI                    | 
00414077  |. 5B             |POP EBX                        |
00414078  |. 8D0C3A         |LEA ECX,DWORD PTR DS:[ED>      | 
0041407B  |. 99             |CDQ                            |
0041407C  |. F77D F8        |IDIV DWORD PTR SS:[EBP-8>      |
0041407F  |. 8B45 08        |MOV EAX,DWORD PTR SS:[EB>      | 
00414082  |. 0FB60402       |MOVZX EAX,BYTE PTR DS:[E>      |
00414086  |. 0FB611         |MOVZX EDX,BYTE PTR DS:[E>      |
00414089  |. 33C2           |XOR EAX,EDX                    |
0041408B  |. 99             |CDQ                            |
0041408C  |. F7FB           |IDIV EBX                       |
0041408E  |. 80C2 41        |ADD DL,41                      |
00414091  |. 46             |INC ESI                        |
00414092  |. 3B75 0C        |CMP ESI,DWORD PTR SS:[EB>      |
00414095  |. 8811           |MOV BYTE PTR DS:[ECX],DL       |
00414097  |.^7C D4          \JL SHORT bpk.0041406D<---------|
00414099  |> 8BC7           MOV EAX,EDI                     
0041409B  |. 5F             POP EDI                         
0041409C  |> 5E             POP ESI                         
0041409D  |. 5B             POP EBX              
0041409E  |. C9             LEAVE
0041409F  \. C3             RETN


Now u can see the loop from address 0041406D to 00414097. The real serial is calculated against your name and compared with ur fake serial in this loop. You may run the  program with F9. Enter fake registration info-->F2 (BP) at address  00414021-->Click OK-->Olly breaks at BP-->then trace with F8 to see how the serial is calculated in the Registers FPU pane on Top right hand side. Now when the correct serial is calculated it is returned to this two address(Select 00414021 and hit Ctrl R) below for further comparing. 

004141BB CALL bpk.00414021<--Remember we already seen this where we change TEST->XOR at 004141D5
00414240 CALL bpk.00414021<--Double click on this one and land in below code

00414240  |. E8 DCFDFFFF    CALL bpk.00414021
00414245  |. 8B75 0C        MOV ESI,DWORD PTR SS:[EBP>
00414248  |. 83C4 0C        ADD ESP,0C
0041424B  |. 8D45 C0        LEA EAX,DWORD PTR SS:[EBP>
0041424E  |. 56             PUSH ESI                  ; /String2
0041424F  |. 50             PUSH EAX                  ; |String1
00414250  |. FF15 1C814300  CALL DWORD PTR DS:[<&KERN>; \lstrcmpiA
00414256  |. 85C0           TEST EAX,EAX
00414258  |. 75 09          JNZ SHORT bpk.00414263
0041425A  |. 3806           CMP BYTE PTR DS:[ESI],AL
0041425C  |. 74 05          JE SHORT bpk.00414263
0041425E  |. 6A 01          PUSH 1
00414260  |. 58             POP EAX
00414261  |. EB 02          JMP SHORT bpk.00414265
00414263  |> 33C0           XOR EAX,EAX
00414265  |> 5E             POP ESI
00414266  |. C9             LEAVE
00414267  \. C3             RETN

Ahaa! can u see that the serial is again checked at 00414250. If u want to verify this i assume that u changed the TEST to XOR at 004141D5 and saved the changes, and entered the fake reg info so that the fake serial is in the registry. 
Okay now put BP  at 00414250 and then hit F9. Olly breaks at our BP. Now can u see the registers pane.

EAX 0012D9E4 ASCII "HXHDVMKMWPOIFRYJ"
ESI 0012E8C0 ASCII "1111111111111111"

So now u know wat to do, change TEST-->XOR so jump is never taken and it goes to CMP at 0041425A so that ESI(fake serial) is always == AL so the program accepts it as a correct serial & gets registered.

So finally to make the crack successful remember we have to change TEST-->XOR at :

1) 004141D5
2 )00414256

Okay now time to make the changes permanent :-)
Right click/copy to executable/allmodifications/copy all, then right click on new box/save file, double click on bpk.exe and select overwrite file.

Run the program, enter any name and serial and the program is registered!! :-)

================================================================================================
                        Finding the correct registration name and code
================================================================================================
Put a breakpoint on below address by pressing F2

004141CE  |. FF15 1C814300  CALL DWORD PTR DS:[<&KERNEL32.lstrcmpiA>>; \lstrcmpiA

Now press F9 and bpk.exe will run.Enter any name preferrably yours -->i type ferrari and any serial for eg. '1111111111111111' and click Ok. Now get back to Olly and see on far top right hand side pane --> 'Registers'  you will find the correct serial number!! 

EAX 0012C114  ASCII "HXHDVMKMWPOIFRYJ" <--- Serial number valid for my name i.e ferrari
                                            your's will be different.

Congratulations cracker!!!

@@@@@@@@@@###########################################################################@@@@@@@@@@ 
@@@@@@@@@@#                          ---SHOUTZ AND GREETZ---                        #@@@@@@@@@@
@@@@  @@@@#                                                                         #@@@@  @@@@ 
@@@ H  @@@#            To Nilrem-->Merlin who's Tutorials helped me to use          #@@@ H  @@@   @@  O   @@#            Ollydbg for debugging. Thanks to el-kiwi whose tutorials     #@@  O   @@
@   R    @#            helped me alot. Thanks to Pompeyfan, www.tech-arena.com      #@   R    @  
@@  S   @@#            staff, members for encouraging me to write these tutorials.  #@@  S   @@
@@@ E  @@@#            exetools.com,Sir JMI, SatyricOn, R@dier and others who       #@@@ E  @@@
@@@@  @@@@#            helped me alot.                                              #@@@@  @@@@
@@@@@@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@@@@@@@@@@ 
@@@@@@@@@@@@@                                                                     @@@@@@@@@@@@@
@@@       @@@                                                                     @@@       @@@
@@ ferrari @@             REMEMBER IF U USE THE PROGRAM THEN BUY IT ;-) !         @@ ferrari @@ 
@@@       @@@                                                                     @@@       @@@ 
@@@@@@@@@@@@@                                                                     @@@@@@@@@@@@@   @@@@@@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@@@@@@@@@@