274 lines
17 KiB
Plaintext
274 lines
17 KiB
Plaintext
![]() |
_CbD_ Tutorial #3
|
||
|
Function Disabled Protections Defeated
|
||
|
Date 7-28-97
|
||
|
Target: WinScan version 2.0.06
|
||
|
|
||
|
About the Protection:
|
||
|
Function Disabled Protections are very comman now days and are one of
|
||
|
the most popular among high priced software or specialty software. But
|
||
|
there days of stoping us are over........ Now !!!!!!
|
||
|
|
||
|
Target:
|
||
|
WinScan ver 2.0.06
|
||
|
WinScan is an intelligent scan, trace and vector editing program designed for use with TWAIN compliant scanners and popular vector illustration packages such as CorelDRAW. This is a very handy program
|
||
|
if you are in the graphics industry or if you make vinyl signs with plotters (As i Do)...
|
||
|
|
||
|
Where to get it :
|
||
|
http://www.airmark.com/
|
||
|
|
||
|
Tools Needed:
|
||
|
SoftIce (SI) (Required)
|
||
|
W32dasm ( optional)
|
||
|
Hiew Hexeditor (included with Tutorial) (Required)
|
||
|
Borland Resource Work Shop (optional)
|
||
|
|
||
|
Pre Crack Notes:
|
||
|
Ok there are several different steps in this crack and there are really 3 cracks that will be done
|
||
|
each one of them will have several steps each. If you dont have the optional Tools above
|
||
|
you will only be able do complete the first 2 parts of this tutorial. (The important ones)
|
||
|
the Last section of the crack only removes the DEMO messages at start and in the about box.
|
||
|
it will change them to the registered Messages instead.. ( Big Deal i know)...
|
||
|
|
||
|
The Crack..........
|
||
|
Ok you should have gotten the programs you need by now so lets start the crack.
|
||
|
|
||
|
Step #1 :
|
||
|
Fire up your program (WinScan) and have a look at it, You should see the Big ugly blue box that
|
||
|
says this is a DEMO version of the program (Like we didnt know this) it is not that big of a deal
|
||
|
because it goes away if you click on it . But now open one of the sample .bmp files that
|
||
|
are in the WinScan Dir. Now try to save the file, you will get a box that says
|
||
|
" This Command is not Allowed Blah Blah Blah" ok so it dont want us to save, But we want to
|
||
|
I mean shit how can you evalutate software if you cant save the work to see its quality?
|
||
|
well I dont think you can so we will cure this problem :-).
|
||
|
Just remember that this little message came to us in the form of a message box.
|
||
|
|
||
|
Step #2:
|
||
|
Now we have a good idea that we are getting the nag from a message box so
|
||
|
if we can break at the message we can see what calls it right. or we could use
|
||
|
W32dasm and located the point that the message is called. well that would take
|
||
|
a bit longer to trace out the code that calls it so we will save that for later or for those
|
||
|
that want to learn a bit more about finding this type of protection calls.
|
||
|
so for now we are just gonna use SI (as it is all that is really needed) to break on the
|
||
|
message that we get when we try to save. So lets start....
|
||
|
First press Ctrl-D to get in SI(Softice) and lets see what we have here, Lets see if we
|
||
|
have any breakpoints left over from a project that you was working on before you
|
||
|
started this one so do this BL This will give you a listing of all breakpoints you
|
||
|
have set in SI. Well we dont want those to cause us problems in this crack so we
|
||
|
will do one of 2 things (1) Clear them with BC * (2) disable them with BD * if you
|
||
|
dont need the BP's (BreakPoints) you can clear them, if you will need them for
|
||
|
another project then just disable them for now. Ok now that we have that out of the
|
||
|
way( Bare in Mind i write my tut's so anyone can follow them even if they have
|
||
|
never cracked before) Lets set our BreakPoints that we will need for this crack
|
||
|
so lets Do this BPX MESSAGEBOXA <--- This will make SI break when the
|
||
|
call to the Messagebox is made. For now that is the only one we need so lets
|
||
|
Ctrl-D back to our target WinScan.
|
||
|
Step #3:
|
||
|
Ok now lets set all this in motion, So try to save this file with the [SAVE] from the menu
|
||
|
or the Disk Icon in the Toolbar. Boom to softice we go Now we are in SI at the
|
||
|
point our program is ready to show us the nag. Now lets think about what we
|
||
|
want to do here (1) we want to find out where this call came from (2) we want to
|
||
|
make it go to the real save Dlg Box and not this nag. So we will do a F11 so we
|
||
|
can get back to what called this function. You will pop back into WinScan where
|
||
|
you will see the Nag. Press Ok and you will pop back to SI Now we are not there yet
|
||
|
cause if you look on the Line between the Command window and the Code window
|
||
|
you will see MFC blah blah blah well this is the place that our message box was called
|
||
|
but this is not our program, Our program called this to get the box so what we will do is
|
||
|
press F10 (single Step) till we get back to our program so press F10 till you see
|
||
|
WinScan on the line between the command and code windows. when you get there
|
||
|
you should see somthing like the following
|
||
|
|
||
|
(note the addresses may not be the same on yours)
|
||
|
|
||
|
0137:00455AF5 CALL 0045D800 <----- This is what calls our little MessageBox
|
||
|
0137:00455AFA JMP 00455B1E <---- Ok we told him he cant save so lets go back
|
||
|
0137:00455AFC MOV ECX, [EBP-14] <---- not important.
|
||
|
|
||
|
ok now we found the call so lets scroll up a few lines and see what we can see. Should like like this
|
||
|
|
||
|
(note the addresses may not be the same on yours)
|
||
|
0137:00455AE0 MOV EAX,[EAX+4] <--- set demo flag
|
||
|
0137:00455AE3 CMP DWORD PTR [EAX + 000000C4] ,00 <-- check and see if this is a demo ver
|
||
|
0137:00455AEA JZ 00455B16 <---- if Zero then this is a Full ver else this is a Demo
|
||
|
0137:00455AEC PUSH FF <--- save some info
|
||
|
0137:00455AEE PUSH 10 <--- save some more info
|
||
|
0137:00455AF0 PUSH 0000009D <--- yup save even more info
|
||
|
0137:00455AF5 CALL 0045D800 <----- This is what calls our little MessageBox
|
||
|
0137:00455AFA JMP 00455B1E <---- Ok we told him he cant save so lets
|
||
|
go on working
|
||
|
0137:00455AFC MOV ECX, [EBP-14] <---- not important.
|
||
|
|
||
|
ok if you look real close i think you can see what we need to do now and if you cant i will
|
||
|
tell you:
|
||
|
0137:00455AEA JZ 00455B16 This jump here will send us to the real save dialog that we
|
||
|
want .
|
||
|
So we need to change the JZ to a JNZ so that the program will think that if we are a DEMO
|
||
|
we should jump to the real Save Dialog and not the Nag. But before we do this lets get some info
|
||
|
that we will need for part 2 of the crack so Do a D xxxx:00455AEA (xxxx is the address you see)
|
||
|
now look in your data window for something like this
|
||
|
|
||
|
0137:00455AEA 74 2A 6A FF 6A 10 68 9D - 00 00 00 E8 06 7D 00 00
|
||
|
^ ^ ^ ^ ^ ^ ^ ^
|
||
|
You will need all these number sets that have a ^ under them so right them down
|
||
|
(Note if you do not have a Data window just above your code window type WD and press enter
|
||
|
in the commad window and it should open up you should also have your Registers window
|
||
|
open as well and to do this type WR and press enter in the command window)
|
||
|
Well lets see if we are right do this
|
||
|
A xxxx:00455AEA and press enter (note where the xxxx is put the right address you see on
|
||
|
your screen)
|
||
|
now you should see somthing like this
|
||
|
|
||
|
A xxxx:00455AEA
|
||
|
xxxx:00455AEA
|
||
|
|
||
|
in your command window
|
||
|
you need to type in this
|
||
|
|
||
|
JNZ 00455B16
|
||
|
|
||
|
then press enter and then press enter again to get back to the command line
|
||
|
now lets see if this werks so press Ctrl-D and when you pop back to WinScan
|
||
|
try to save again WOW you can now save . Well the only thing is that you cant use the
|
||
|
Save As function so we need to fix that to and to do this we follow the same steps as above
|
||
|
but instead of pressing the Save we press Save As from the Menu
|
||
|
and you will break right back in the same Message that you did before
|
||
|
you need only to follow then same steps as above to get back to the WinScan
|
||
|
call and then scroll back up and find the JZ that will send us to where we want to go
|
||
|
|
||
|
if you cant seem to make it werk here is the steps for this one
|
||
|
|
||
|
Step #1:
|
||
|
Ok now lets set all this in motion, So try to save this file with the [SAVE AS] from the menu
|
||
|
Boom to softice we go Now we are back in SI at the same
|
||
|
point our program is ready to show us the nag. Now lets think about what we
|
||
|
want to do here (1) we want to find out where this call came from (2) we want to
|
||
|
make it go to the real save Dlg Box and not this nag. So we will do a F11 so we
|
||
|
can get back to what called this function. You will pop back into WinScan where
|
||
|
you will see the Nag. Press Ok and you will pop back to SI Now we are not there yet
|
||
|
cause if you look on the Line between the Command window and the Code window
|
||
|
you will see MFC blah blah blah well this is the place that our message box was called
|
||
|
but this is not our program, Our program called this to get the box so what we will do is
|
||
|
press F10 (single Step) till we get back to our program so press F10 till you see
|
||
|
WinScan on the line between the command and code windows. when you get there
|
||
|
you should see somthing like the following
|
||
|
|
||
|
(note the addresses may not be the same on yours)
|
||
|
|
||
|
0137:00455BD5 CALL 0045D800 <----- This is what calls our little MessageBox
|
||
|
0137:00455BDA JMP 00455BFE <---- Ok we told him he cant save so lets go back
|
||
|
0137:00455BDC MOV ECX, [EBP-14] <---- not important.
|
||
|
|
||
|
ok now we found the call so lets scroll up a few lines and see what we can see. Should like like this
|
||
|
|
||
|
(note the addresses may not be the same on yours)
|
||
|
0137:00455BC0 MOV EAX,[EAX+4] <--- set demo flag
|
||
|
0137:00455BC3 CMP DWORD PTR [EAX + 000000C4] ,00 <-- check and see if this is a demo ver
|
||
|
0137:00455BCA JZ 00455BF6 <---- if Zero then this is a Full ver else this is a Demo
|
||
|
0137:00455BCC PUSH FF <--- save some info
|
||
|
0137:00455BDE PUSH 10 <--- save some more info
|
||
|
0137:00455BD0 PUSH 0000009D <--- yup save even more info
|
||
|
0137:00455BD5 CALL 0045D800 <----- This is what calls our little MessageBox
|
||
|
0137:00455BDA JMP 00455BFE <---- Ok we told him he cant save so lets
|
||
|
go on working
|
||
|
0137:00455BDC MOV ECX, [EBP-14] <---- not important.
|
||
|
|
||
|
ok if you look real close i think you can see what we need to do now and if you cant i will
|
||
|
tell you:
|
||
|
|
||
|
0137:00455BCA JZ 00455BF6 This jump here will send us to the real save dialog that we
|
||
|
want .
|
||
|
So we need to change the JZ to a JNZ so that the program will think that if we are a DEMO
|
||
|
we should jump to the real Save Dialog and not the Nag. Well lets see if we are right
|
||
|
do this A xxxx:00455BCA and press enter (note where the xxxx is put the right address you see on
|
||
|
your screen:
|
||
|
now you should see somthing like this
|
||
|
|
||
|
A xxxx:00455BCA
|
||
|
xxxx:00455BCA
|
||
|
in your command window
|
||
|
you need to type in this
|
||
|
|
||
|
JNZ 00455BF6
|
||
|
|
||
|
then press enter and then press enter again to get back to the command line
|
||
|
now lets see if this werks so press Ctrl-D and when you pop back to WinScan
|
||
|
try to SAVE AS again WOW you can now Save As now isnt this fun
|
||
|
|
||
|
well the only thing is that this will only werk till we exit our program, When we restart it the nags
|
||
|
will be right back so now we need to make a real crack for our program.
|
||
|
so on to part 2 of this Crack
|
||
|
|
||
|
Part 2: Hex Editing our program
|
||
|
|
||
|
well lets make sure we have all the info we will need..
|
||
|
Remeber the things i told you to write down well i hope you did ;-)
|
||
|
and if not then here it is
|
||
|
xxxx:00455AEA 74 2A 6A FF 6A 10 68 9D
|
||
|
well we will need this in Hiew to search for our Jumps we need to change
|
||
|
(by the way you should print this file to make lie easier on you)
|
||
|
Lets make a backup copy of our file you can name it what ever you wish (i used
|
||
|
WinScan.cbd) just dont use the .bak as this is needed else where
|
||
|
So lets fire up Hiew to do this we will need to have the program and Hiew in the
|
||
|
same Directory I use a Temp dir and copy both files to it (Hiew and Winscan.cbd)
|
||
|
now at a dos prompt type
|
||
|
(the numbers in ( ) are the steps)
|
||
|
(1) Hiew WinScan.cbd (or what ever you named it) now you will be in the Hiew program and will see a
|
||
|
bunch of shit that makes no sence what so ever
|
||
|
(2) so press the F4 key to get the Hex View (or what ever the key is at the
|
||
|
bottom) now we will have to search for our command and in order to do this we will
|
||
|
need to have the numbers above
|
||
|
(3) so press F7 and then enter the numebrs above
|
||
|
ie ( 74 2A 6A FF 6A 10 68 9D ) AND and press enter
|
||
|
then you will land at the first match it found
|
||
|
you
|
||
|
(4) should press F2 to get the ASM code of the above string
|
||
|
(5) then press F3 to edit it
|
||
|
(6) You will get a box that will show you a je and a address you just need to change the
|
||
|
je to JNZ then press enter
|
||
|
(7) now press F9 to update
|
||
|
(8) and Press F10 to quit
|
||
|
now restart Hiew and do each step over again
|
||
|
The first one is the Save function and if you do it again you will be in the Save As function
|
||
|
And if you do it a third time you will be in the Save Vectors functioin(not talk about because you
|
||
|
must have a scanner to use it) but go ahead and crack it to ..
|
||
|
Well that is it after all that you will have a fully working program that will work forever
|
||
|
Now if you wish to get rid of the DEMO screens that you see when you start the program
|
||
|
and in the About Box you can continue to Part 3 of the Crack (Must have Borland Resource WorkShop)
|
||
|
|
||
|
Part 3 Removing the Demo Screens
|
||
|
|
||
|
Start BRW and locate the Bitmaps that represent the Demo Messages
|
||
|
239 <--- About Box BitMap
|
||
|
240 <---- Start up BitMap
|
||
|
Now lets find the ones for the Full version
|
||
|
102 <--- Startup BitMap
|
||
|
159 <--- About Box BitMap
|
||
|
Now all you have to do is Delete 239 and 240
|
||
|
then select 102 and then make a Duplicate of it (Right Click of the mouse and you will see Duplicate)
|
||
|
then do the same for 159 after you have done this it will rename them to something like
|
||
|
BitMap1 and BitMap 2 well rename the copy of 102 to 240 and the copy of 159 to 239 and that is
|
||
|
it you now will see the Full Version srceens when you run your program . Although this is not
|
||
|
Needed for the Crack to work this is just another thing you can do to remove the DEMO
|
||
|
nags But seeing how if you like the Program you are going to Buy it (RIGHT) you reall need not
|
||
|
do this part ;-)
|
||
|
|
||
|
Part 4 Yeah i Know i said 3 parts but read on
|
||
|
Well if you wish to make a crack that you can distribute to others then you can get
|
||
|
a program like gpatch or write your onw in your favorite language to do all of the
|
||
|
above changes .... Well that is it for this Tutorial
|
||
|
|
||
|
I Hope that you have learned something from this tutorial and i hope i have helped you to
|
||
|
better understand how this type of protection works. And remember this is a Shareware
|
||
|
program and if you intend to use it then Buy It after all they were nice enough to give us
|
||
|
the demo so we could Crack and Evaluate it so cintribute to them and give them the money
|
||
|
they ask for it is only fair........... _CbD_ [ME/C4N'97]
|
||
|
|
||
|
I want to take a few lines here to say thanks to a few ppl So thanks go to :
|
||
|
nIabI of [ME/C4N'97] for gpatch and all your help
|
||
|
Scorpoin of [ME/C4N'97] for the info on Hiew
|
||
|
mornings on #cracking4Newbies for testing my tuts
|
||
|
and anyone i forgot :-) Thanks all .............
|
||
|
|
||
|
|
||
|
|
||
|
|