OllyDbg is a 32-bit assembler level analyzing debugger for Microsoft Windows. This machine level debugger is created by Oleh Yuschuk for the 80×86. OllyDbg traces registers, recognizes procedures, loops, API calls, switches, tables, constants and strings. These features can be utilized to understand how an application internals.
Introduction
Ollydbg mainly has 4 windows in the default layout. CPU Window, Registers, Memory Stack and HEX Dump window. We will be working on CPU window most of the time.
OllyDbg Download :
A set of 3 tutorials illustrated here explains on how effectively can OllyDbg be used to identify the security holes and to ensure that the code written is healthy.
Enter any test data and observe the error message displayed.
Search for referenced text strings as mentioned in Tutorial-1. Scroll to the location shown below.
Notice the 2 ‘Key like’ strings in the text strings referenced. If you think that one of them is valid, then you are wrong, but then why and where is it used? And what is the correct key? We can find that out soon.
Double click the message ‘The serial you entered is not correct’ to reach the instruction location in the CPU window. When we analyze the code we come across a few concatenations operations. But unfortunately the keys are concatenated with blanks and finally compared with the user input.
The blank values you see in the comments are not really blank ones. They values are assigned on runtime. We have to set a breakpoint to obtain the dynamic assigned value.
To set a breakpoint, select the instruction and press ‘F2′. Breakpoints highlighted in red over the memory location.
Press the ‘Play’ button to run the crackme application. Enter any random data and click the ‘Check’ button. The application pauses at the breakpoint set in the previous step. Go to the same location where you saw the 2 suspicious ‘Key Like’ strings in the previous step.
Just before where the breakpoint was set we can find a new long string value displayed instead of blank strings which was displayed earlier. If you reverse engineer now, you can understand that the 2 Keys ‘L2C-5781‘ and ‘4562-ABEX‘ are static ones and are prefixed and suffixed, respectively, with a dynamically generated string. This is what we were looking for; the correct key to this app.
CrackMe App Download : Alt :
Video
Conclusion : Never hardcode even fragments of static keys which can be helpful to deduce the complete key. Use some kind of logic to generate a dynamic key value.
Tutorial 3 – Deriving the logic of the generated key to create Keygens
Enter any test string to get the error message.
Search for the referenced text strings and locate the message displayed in the error box. After analyzing the text references we find that there are no hardcoded keys or presence of any fragments of keys.
We have Double click to open the CPU window and set breakpoint by pressing ‘F2′
Check whether there are any new strings generated at the CPU window (and trust me you wont find any ). Now check the memory stack and scroll to the instruction where the userid we have entered is displayed. If you scroll a bit down you can find a ‘Key Like’ string below the userid string. Try to enter that in the key field, it should work.
There is no point in finding out the key without understanding the logic behind the generation of the key. Once if we find the logic, we can reverse engineer and create a distributable keygens.
We can segregate the userid and corresponding key values as follows
t – D8
e – C9
s – D7
t – D8
e – None
r – None
Now open ‘calc’ in scientific mode – Select Hex mode – Type D8
Select Dec mode to convert HEX value to Decimal.
Note down the corresponding Decimal value for each HEX equivalent.
Now open any asciichart and note down the ascii value for the userid chars.
We can notice a difference of 100 between the converted HEX value and ascii value of the userid.
So we can derive the logic to create our own Keygen
Logic Sequence
Take the 4 four characters of the username
Convert chars to corresponding decimal value
Add 100 to the decimal value obtained in step 2
Covert this to HEX and the Key is obtained!
CrackMe App Download : Alt:
Video
Conclusion: Always use a multilevel, complex logic to derive your own key. Always advised to use any standard encryption algorithm to generate the key used for comparison.
Note:The apps used in the tutorials are downloaded from the DeathSpawn Website (Not working anymore ) and detailed ‘How-to’ is can be read from the text file which is present along with the app package.