|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
||
|
|
|
There is a crack, a crack in everything. That's how the light gets in. |
|
|
"WebDisk is a light weight yet fully functional web server for Windows 95/NT. It supports forms, provides access control by IP addresses and/or directories, logging. It can be used as a:
1) Personal web server. WebDisk is extremely easy to configure and it provides enough functionality to publish your HTML pages on the web.
2) Tool for testing your
websites. Multiple websites can be tested simultaneously by running
multiple WebDisks on different ports. Even when your HTML pages are on a
CD-ROM or floppy disks, WebDisk is able to resolve absolute and relative links.
You do not need to move the pages between directories or rename directories, all
you need is to tell WebDisk the document root directory you want.
3) Tool that
allows you to access your computer remotely through a web browser. You
will be able to browse through directories, view, download and upload files.
WebDisk makes files on your PC accessible from any computer, including Unix
workstations and Macs. All you need is a copy of WebDisk and a web
browser."
|
|
The program stores its (40 uses only) counter and
user details here:-
HKEY_CURRENT_USER\Software\Ararat\User
With the following entries:-
Email=
RegID=
Usage="QAg6b5cH2243" *changes each time it is run*
UserName=
|
|
For my approach I will need to patch this program
in three places, the first two patches will disable the two checks the program
makes on our serial number as we try and register it and the third patch will
disable the checking of the serial number as the program is first run.
PATCH 1 & 2 - Disabling two Serial number checks -
Registration Screen.
The program
uses it's 'About' Screen as a way of displaying a nag screen, it's also
here where we can *register* this program...
1. Start up Web Disk, select the 'Register' button.
For the User Name type in your name or
handle.
For the Email Address type in whatever you want, you
can use your *real* email address since nothing happens to it..
For the
Registration No you can again type in any sequence of numbers
here.
2. Press the
Ctrl-D keys together to fire up Softice.
3. Type bpx
messageboxa then x to leave Softice.
4. Press the
'Register' button.
5. Softice breaks.... Press the 'F11' key
ONCE.
We should at this stage see the following code snippet...
:00402F04
83F90C cmp ecx,
0000000C
:00402F07
731D jnb
00402F26 ;1st serial No
check.
;Correct serial #? jump if yes
:00402F09
6A30
push 00000030
:00402F0B 68D4724100 push 004172D4
;="Error"
:00402F10
68BC724100 push 004172BC ;=Invalid Registration #"
:00402F15
55
push ebp
:00402F16 FF15F4E44100 Call
USER32.MessageBoxA
:00402F1C B801000000 mov eax,
00000001 ;We land here.
:00402F21
E968FEFFFF jmp 00402D8E
6. Double Click on the jnb
00402F26 instruction or, type bpx 00402F26
which will set a new breakpoint for Softice.
7. Type bd 00
then x to leave softice and return back to our target
program.
8. Re-run the
registration process again, click on the 'register' button once you have
filled in all the User details.
9.
Softice breaks on line
:00402D07 jnb
00402F26
10. Type r eip=402F26 this will force Softice to
jump to the memory location indicated by our jnb instruction. We've now by
passed our 1st of 2 serial number checks..
We should now see the following code
snippet. Now keep pressing the 'F10' UNTIL you land on the
jne 00402FD1
instruction.
*
Referenced by a (C)onditional Jump at Address :00402F07(C)
:00402F26
8D8424B0000000 lea eax,
dword ptr [esp+000000B0]
:00402F2D
8D4C2410
lea ecx, dword ptr [esp+10]
:00402F31
50
push eax
:00402F32
51
push ecx
:00402F33
E8A8970000
call 0040C6E0
:00402F38
83C408
add esp, 00000008
:00402F3B
85C0
test eax, eax
:00402F3D
0F858E000000
jne 00402FD1 ;2nd Serial No
Check!
:00402F43
8D7C2430
lea edi, dword ptr [esp+30]
:00402F47
B9FFFFFFFF
mov ecx, FFFFFFFF
;Now tell the rest of the program
it's been registered!
;The next instruction places a value of '1' in memory location
0041BE80
;that signifies that
the program has been registered. Default value='0'
:00402F4C C70580BE410001000000 mov
dword ptr [0041BE80], 00000001
:00402F56
2BC0
sub eax, eax
11. Once you
land on jne 00402FD you need to type r
eip=00402F43 which will once again force Softice to start executing the
program at a new location within the program itself, thereby 'ignoring' this
jump instruction and continuing on with the next instruction below it!.
12. Type x to
leave softice and allow the program to run as normal.
13. Bingo!. Our program
is now fully registered, click on the 'About' menu option for
confirmation..
14. Now exit Web Disk and then
re-run it again. It's gone back to being a 'Shareware' program again,
however, our User details have been safely stored within the System Registry
file so all we need to do now is to patch the program once more so that we can
disable the program's checking of our serial number each time it is run.
PATCH 3 - Disabling the Serial Check on loading.
A quick look in our dead listing (you did create one didn't you?) for the text "UNREGISTERED COPY" displayed in the 'About' screen each time the program is run shows us this code snippet, which is heavy in 'Shareware' type messages...
:00402A89
A180BE4100 mov eax, dword ptr
[0041BE80] ;Get reg status
:00402A8E
83F8FF
cmp eax, FFFFFFFF ;still
unregistered?
:00402A91
7412
je 00402AA5 ;then "Beggar off
Cracker"
:00402A93
85C0
test eax, eax
:00402A95
7477
je 00402B0E ;"Beggar off Cracker"
:00402A97
83F801
cmp eax, 00000001 ;Are we
registered?
:00402A9A 0F840D010000 je
00402BAD ;then "Good Cracker
Jump"
:00402AA0 E9B9020000 jmp
00402D5E
:00402AA5 683C724100
push 0041723C ;="UNREGISTERED COPY"
:00402AAA
8B3DD8E44100 mov edi, dword ptr
[0041E4D8]
:00402AB0 6813050000
push 00000513 ;="This copy of web
disk...."
:00402AB5
56
push esi
:00402AB6
FFD7
call edi
:00402AB8 833D88BE410029 cmp dword ptr
[0041BE88], 00000029
:00402ABF
740D
je 00402ACE
:00402AC1 682C724100
push 0041722C ;="Invalid License"
:00402AC6
6811050000 push
00000511 ;="License Expired"
:00402ACB
56
push esi
:00402ACC
FFD7
call edi
Hey look, notice that all these checks by the
program start off by first reading the contents of memory location 41bE80 with
the instruction:
mov eax,
dword ptr [0041BE80]
This is a
good clue to follow, it's feels like a 'registration flag' where by the program,
just by reading what's inside can tell wether or not the program has been
registered or not!.
Before I proceed any further let me explain
something here.. We *could* crack this program here and now without going any
further simply by changing the instruction je 00402AA5 into a
jmp 00402A9A and we would then have a 100% *cracked* program but as a
cracker who strives to create clean and straight forward *cracks* there is a
much better way to *crack* this babe..
While still in Softice...
1. Type bc * to clear away any previous
Softice breakpoints.
2. Type bpm
0041BE80 to set a memory breakpoint on this memory location.
3. Type x to leave softice.
4. Exit Web Disk. If
Softice breaks while exiting Web Disk just keep typing x in
Softice.
Now...
5. Start up Web Disk once
more...
6.
Softice breaks on our 1st memory breakpoint on location 0041BE80
7. BINGO!
Our first Softice memory
breakpoint shows us this snippet of code!
:00406513
FF150CE54100 Call dword
ptr [0041E50C]
;Returns with either:
;edi=FFFFFFFF if serial no invalid or
not found in the Registry file.
;edi=0 if a serial number was found and
is correct
:00406519
83C410
add esp, 00000010
:0040651C
893D80BE4100 mov dword ptr
[0041BE80], edi ;Save edi
:00406522
8D4C2468
lea ecx, dword ptr [esp+68] ;We land
here
:00406526
51
push ecx
:00406527
6890BE4100
push 0041BE90
:0040652C
E8AF610000
call 0040C6E0
:00406531
83C408
add esp, 00000008
:00406534
85C0
test eax, eax
:00406536
750A
jne 00406542 ;jump if invalid serial
#
;If we nop out the above jne
instruction the the program will come here
;and automatically place a value of '1' into our 0041BE80 memory
location
;which then tells the
rest of the program that this software is registered.
:00406538
C70580BE410001000000 mov dword ptr [0041BE80],
00000001
:00406542
833D80BE410001 cmp dword ptr
[0041BE80], 00000001
:00406549
7428
je 00406573
It's clear then, if we Nop (90h) out the jne 00406542 instruction then the
program will ALWAYS register itself each time it is run.. Because of this,
that's why it's important to enter our details into the program
first before we 'patch' this routine, else when the program comes
to this registering itself here it won't display our User details, since we've
not let the program save them to the system registry file!.
Job Done.
|
|
Now run the program and *register* it as normal, use any serial number
you want. Then exit the program completely. Now for the final 'Patch'...
SEARCH FOR THE FOLLOWING
BYTES : 83C40885C0750AC7
REPLACE WITH HIGHLIGHTED BYTES : 83C40885C09090C7
|
|
|
|
| Next | Return to Essay Index | Previous |