Copy Link
Add to Bookmark
Report
_CbD_s Tutorial 03
_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 .............