|
|
|
|
|
|
|
|
|
|
||
|
||
|
|
There is a crack, a crack in everything. That's how the light gets in. |
|
"When ClipHound is running,
it will monitor the Windows 95 clipboard. Whenever you cut or copy
some text, ClipHound will take a look at it and determine if it should
take action. Usually, this means ClipHound will make a private copy
of the text you put on the clipboard in its own list. However, if
you
have PasteBack enabled,
ClipHound will check the text you placed in the clipboard against the names
of items already in ClipHound. If a match is found, the full contents of
the item matched is placed in the clipboard, overwriting the name.
You can then paste this back into your application."
|
|
:004021EC 7505
jne 004021F3
;If any other bytes found
;other than [07D0] then
;the program isunregistered
:004021EE 8B45EC
mov eax, dword ptr [ebp-14]
:004021F1 EB17
jmp 0040220A
* Possible StringData Ref from Data Obj ->"Unregistered Shareware"
:004021F3 6814914200
push 00429114
;Program comes here IF
;it has NOT been registered
:004021F8 8D4DD8
lea ecx, dword ptr [ebp-28]
:004021FB E8C72F0100
call 004151C7
Looking at the above code we *could* just nop(90h) out that jne 004021F3 instruction completely and yes, the program would run as though it has been registered but that is not the whole story here.. Look what W32Dasm is telling us..
It is telling us that the program tries to see if, at a certain memory
location pointed to by the [esi] register that there exists two bytes [07D0]
and if whatever is currently stored at [esi] is NOT EQUAL to [07D0]
(i.e not the same) then the program knows that it has not been registered!.
In order to see the importance of this we must now use W32Dasm and
search for any other locations within the program's code to see if it performs
the same check for these two magic bytes [07D0] anywhere else, if it does
then we can assume that these represents the differences in the way the
program works between being a Shareware program and being a fully registered
program..
While still in W32Dasm search for the bytes: 6681
these two bytes make up just a part of the cmp
word ptr [esi], 07D0 instruction and will find variations of this
same instruction as well. Right, we should see that there are four
other locations within this program that checks to see if the program is
registered or not. Can you see what I'm trying to say here?. If we
simply NOP (90h) out the jne 004021F3 instruction at memory location :004021EC
then we WON'T be placing the magic [07D0] bytes in the computer's memory,
that then tells the rest of the program that it has been registered even
though we can fool it into accepting our fake serial number by nop'ing
the jne instruction!! If you are to understand *cracking* then you really
must understand this statement.
OK, then what must we do?.. Well, we MUST
make sure that the bytes [07D0] get placed in the [esi] register BEFORE
we can proceed to the 'Good Guy' routines so why not change the cmp
word ptr [esi], 07D0 instruction and turn
it into mov word ptr [esi], 07D0
which we CAN do easily. Next, since our two magic bytes [07D0] have now
been placed correctly into memory we can no get rid of that jne 004021F3
instruction since there is now no comparison instruction being executed,
so now we can nop it out knowing that it is no longer needed.
Here's what our new routine looks like:-
BEFORE:
:004021E3 C645FC03
mov [ebp-04], 03
:004021E7 66813ED007
cmp word ptr [esi], 07D0
:004021EC 7505
jne 004021F3
:004021EE 8B45EC
mov eax, dword ptr [ebp-14]
:004021F1 EB17
jmp 0040220A
* Possible StringData Ref from Data Obj ->"Unregistered Shareware"
:004021F3 6814914200
push 00429114
:004021F8 8D4DD8
lea ecx, dword ptr [ebp-28]
:004021FB E8C72F0100
call 004151C7
AFTER:
:004021E3 C645FC03
mov [ebp-04], 03
:004021E7
66C706D007 mov word ptr [esi], 07D0
:004021EC
90 nop
:004021eD
90 nop
:004021EE 8B45EC
mov eax, dword ptr [ebp-14]
:004021F1 EB17
jmp 0040220A
* Possible StringData Ref from Data Obj ->"Unregistered Shareware"
:004021F3 6814914200
push 00429114
:004021F8 8D4DD8
lea ecx, dword ptr [ebp-28]
:004021FB E8C72F0100
call 004151C7
See, we've changed a cmp instruction into a mov instruction then nop'd
out a redundant jne instruction and now we have a fully registered ClipHound
program!
Job Done.
|
|
|
Next | Return to Essay Index | Previous |