home *** CD-ROM | disk | FTP | other *** search
- Tutorial Number 36
-
- Written by Eternal Bliss
- Email: Eternal_Bliss@hotmail.com
- Website: http://www.Eternal-Bliss.net or http://vipatcher.cjb.net
- Date written: 19th May 2000
-
- Program Details:
- Name: 2EZ Crackme #1 by Magic Raph
-
- Tools Used:
- SmartCheck
- SoftIce
-
- Cracking Method:
- Serial Sniffing
- Code Analysis
-
- Viewing Method:
- Use Notepad with Word Wrap switched on
- Screen Area set to 800 X 600 pixels (Optional)
-
- __________________________________________________________________________
-
-
- About this protection system
-
- This is a Name/Serial protection scheme written in Visual Basic 6. So,
- for VB, let's use SmartCheck. The Name must be of at least 3 chars.
-
- _________________________________________________________________________
-
-
- About this tutorial
-
- This tutorial relies quite a lot on my previous tutorials because I will
- not go into details on how to config SmartCheck and so on. Read my other
- stuff and you will learn.
-
- _________________________________________________________________________
-
-
- SmartCheck
-
- Load the crackme into SmartCheck. Run it.
- Enter "Eternal Bliss" for the name and "1234567890" for the serial,
- both without the quotes. Click on "Check!". You will get a messagebox saying
- it is the wrong serial.
-
- Now, let's look at SmartCheck's log.
- You will see a _Click with a + sign in front of it. Click on the + sign
- to expand it.
-
- What you will see is lots of Len(), Mid$(), Asc(), Left$() and a MsgBox
- at the end. The MsgBox is the one you saw telling you that you had entered
- the wrong serial.
-
- Notice all the Left$() contains numbers.
- And Mid$() contains your name and Asc() contains 1 char of your name.
-
- So, it is Mid$(yourname) then Asc(char) and a Left$().
- That's how the serial is obtained.
-
- Now, to serial sniff, click on the MsgBox and choose "View" -> "Show All
- Events"
- in SmartCheck. Ah, even more stuff. Scroll up a bit and you will see a
- __vbaVarTstEq.
-
- I repeat here again that all these commands have been mentioned in
- my previous tutorials and essays so I won't repeat them again. If you want
- to learn, download them and read.
-
- Basically, __vbaVarTstEq is used to compare 2 variants which is a data type
- in VB. So, if you have entered "Eternal Bliss" as the name,
- "1419668" is compared with something else. Using a bit of intuition, let me
- guess that "1419668" is compared with the serial we entered. This is because
- after the compare, came the messagebox. 8)
-
- Type in "1419668" in the serial box... You are the registered owner of the
- crackme. 8)
-
- If you were to use softice, set a breakpoint using "bpx
- msvbvm60!__vbaVarTstEq"
- the reason for msvbvm60! is because this crackme is written in VB6. If it
- was
- a VB 5 program, you can just type "bpx __vbaVarTstEq".
- Once you break, trace into the calls. At a certain location, you will see
- mov edi, something and mov esi, something. If you type "d edi" and "d esi"
- after
- the two lines, you will see both the serial you entered and the correct
- serial.
- Have fun!
-
- _________________________________________________________________________
-
-
- Additional Stuff
-
- If you look carefully at the log in SmartCheck when it is showing all
- events,
- you will see the following sequence.
- Mid$(Yourname) - to get the char
- Asc(char) - to convert to decimal
- __vbaVarMul - multiple
- __vbaVarXor - Xor
- __vbaVarMove - move result into a variable
-
- Using the last character of "Eternal Bliss" which is "s",
- here is what happens.
- Asc(s) - give you 115 decimal for char "s"
- __vbaVarMul(VARIANT:Integer:115, VARIANT:Integer:12345) - multiple 115 by
- 12345
- __vbaVarXor(VARIANT:Long:1419675, VARIANT:Integer:15) - Xor the result
- with 15
- __vbaVarMove(VARIANT:Long:1419668, ...) - move it to a variable
-
- And this number "1419668" is the correct serial. This means that
- any other previous calculations are useless.
-
- So, to code a Keygen, what you need is to get the last char of the name
- which must be at least 3 char long. Get the decimal value for it,
- multiple by 12345 and xor the result by 15.
-
- _________________________________________________________________________
-
-
- Final Notes
-
- This tutorial is dedicated to all the newbies like me.
-
- My thanks and gratitude goes to:-
-
- All the writers of Cracks tutorials and CrackMes
- and also to all the crackers that have been supporting my site and project
- forum.
-
-
-
-
-