Author : dn5
Website : www.profnetwork.wordpress.com
Email : .?*~@cjb.net
Team : I'm not member of any group (remember that)
Date : 18.04.2011 / 21:10
-
/ Intro
/ Tutorial
/ Explanation
/ Outro
* Resources
-
-= Intro =-
In this tutorial, I’ll teach you how to phish serial. Phishing serial is easy method to get serial of tool. This is example, so I won’t use any commercial softwares but some “Register me” that I download from crackmes.de. I will add download and resource you’ll need at bottom of post (If I don’t forget). I bet there is no tutorial on this crack me so it’s not stolen (who will create tutorial on so easy crackme). You will need basic knowledge of programming
(or wont), and knowledge in OllyDbg as I will use it this time.
-= Tutorial =-
Here we go. What we need to do is to open up OllyDbg and open crackme in it (I know you did already) and run it.

I guess you already know how to run it, otherwise leave the tutorial and go read over the basics first. You will now get “Register Me” been executed and get window like this:

What we need to do at first is write false info, check for error type, search for that error, and phish the serial. Lets go one by one. Enter false info into “Register Me” and press Register. Note, the Name must be at least 5 chars, otherwise you will get up with other error we don’t need. This time, I will use name: dn5iscool(orly) and password 123456.
Ok, so the error at false input is: “Invalid Registration Name or Serial“. Lets go back to Olly (Don’t close fuck*ng Register Me) and go right click then Search for -> All referenced text strings.

Really, If you don’t know how to search for referenced text strings, press F1 -.- Anyhow, when you get all referenced text strings find the one that we need (Invalid Registration Name or Serial) double click it.

You will automatically be transformed to main thread and to address $453A53. That is the address which holds that error. Scroll a bit up untill you see “Push EBP” (will talk about it later).
The address where Push EBP is $45391C (note $ is 00 or 0x). Now let’s see whats happening there, put break-point on Push EBP (use F2 to set breakpoint). Now the address of Push EBP will be red. That means that operation will break if pointer comes to breakpointed address. Lets run the “Register Me” again like first time and press “Register” button. BUM!!! You see, the operation break and cursor is set to the last event (pressed button or Push EBP), thats why you don’t see error came up. Navigate OllyDbg(without closing register me) and press F8. The selection will be moved forward.
As you can see there is nothing interesting in info box. Here is Info box of Push EBP:
The info box of address below Push EBP is:
ESP=0012F62C
EBP=0012F76C
and the command is MOV EBP, ESP. MOV register copies the value from source to destination and source stay where it was. Press F8 again and again and again until you see something interesting (username, serial, some ascii etc.).
...
...
...
...
...
And BUM!!! Once again. At address 00453967 I’ve seen that in infobox it shows my name:
Ok, that is my name. But I’m looking for serial, right? Ok, let’s move on. Press F8 again and again, and again until you find something useful(like I mention).
...
And BUMMMMM!!! For the 3rd time. Ok. This is the last time -.-. On the address 0045398A in info box is shown next text:
Stack SS:[0012F604]=009B3994, (ASCII "123456")
This is my false serial. Who cares about it. (Btw. Stack is place were we store some data which we can read later) Press F8, again and again bla bla. You know already what you have to do.
...
...
...
After showing my username 3 times more into info box I’ve seen something strange. This was on address 004539CE:
DS:[009B3F28]=64 ('d')
EAX=009B3F28, (ASCII "dn5iscool")
So what does it do? First the DS is getting the value of first character which is “d” in this case, and get it’s hexidecimal number. How did I know that? I’ve check it :].

As you can see the Hex of Ascii “d” is 64. Thats why that line show number
64: DS:[009B3F28]=64 ('d')
Now after we know it encrpyts char “d” with hex lets press F8 again and again.
...
Wohaa, this time, it took my char “n” from the name:
DS:[009B3F29]=6E ('n') <- Here
EAX=009B3F28, (ASCII "dn5iscool")
I check the ASCII “n” and it came up that its really 6E in hex. So, lets get press F8 some more time.
DS:[009B3F2A]=35 ('5')
EAX=009B3F28, (ASCII "dn5iscool")
…
DS:[009B3F2B]=69 ('i')
EAX=009B3F28, (ASCII "dn5iscool")
…
DS:[009B3F2C]=73 ('s')
EAX=009B3F28, (ASCII "dn5iscool")
But after awhile, I got that it takes only first 5 chars (Thats why it look for 5 chars all at beggining). So press F8 all up to address: 00453A2E. What we got here is all this hex numbers. Let’s press F8 some more time (maybe we will catch something).
...
At the address 00453A49 there was this text: Stack
SS:[0012F60C]=009B2468, (ASCII "356473696E")
EDX=00140608
I bet that is my serial. Let me try it. Oh ye. We forgot to remove old breakpoint from address $45391C at start of the tutorial so remove it if you didn’t (select the address and press F2 to remove breakpoint). Ok try it now.

Yes! Finally! It’s cracked. The serial was that. Ok, you indeed crack it, let me explain what have you done.
-= Explanation =-
In the tutorial I explain most of the things, but let me review it :]. First what is Push EBP.
* Push EBP
In the programming we code in either english sintax (high-level) or mehanical sintax (low-level) language. One of the low-level language is ASM. There are no fancy words in ASM like include this, uses this, loop this and that, but using registers (predefined variables) we acutally create program. The compiler transform logical code like C++ one to mehanical code which is ASM. In ASM the EBP stands for Extended Base Pointer or BP – Base pointer. EBP has mostly to do with stack and stack frames. In this case where stack is pointer event of pressing a button, we “run” that event. It’s little hard to explain but:
Imagine that EBP is some box. In that box we can put toys, computer, book, anything. If we want to break some toy that is some event. So if actually push banana we squeeze it. Banana in this case is EBP and push event is our hand.
+-------+
| EBP |
+-------+
Now I messed it even more but w/e.
* Getting the serial
Most part of getting the serial is explained in tutorial, but what is not explained is why the chars arent in correct order. Well thats the trick of creator. He maybe wants to trick us so it will be harder to code keygen, but we fucked him up (no we didn’t) and phish the serial. Let’s virtually back all up:
DS:[009B3F28]=64 ('d') <- First char (1) | Hex: 64
DS:[009B3F29]=6E ('n') <- Second char (2) | Hex: 6E
DS:[009B3F2A]=35 ('5') <- Thirdh one (3) | Hex: 35
DS:[009B3F2B]=69 ('i') <- Fourth for fuck sake (4) | Hex: 69
DS:[009B3F2C]=73 ('s') <- And the last one (5) | Hex: 73
The whole serial should be: “646E356973” but the correct one was this “356473696E“. Why?
1. The thirth char goes to 1st place. 35->1 = 35
2. The first char goes to 2nd place. 64->2 = 35 64
3. The last char goes to 3th place. 73->3 = 35 64 73
4. The char before last one goes to 4th place. 69->4 = 35 64 73 69
5. The second char goes to last place. 6E->5 = 35 64 73 69 6E
6. The SUM of all these is = 356473696E
And the SUM is correct answer (our serial).
I bet you get it. It’s long shit I write and I’m sick :[ (yes, I can be sick too!). Next time I will write tutorial (InsAllah) about creating keygen of this tool in Delphi (and maybe but maybe Visual Basic 6).
-= Outro =-
Why outro even exists? Anyway, I would like to say thanks to: Register me author, n0p-6o-n0p, Oleh, whole AT4RE group, Mr Paradox, ICU (starzboy), whole demoscene and greetz to all reversers as long with fallowing websites: ljuska, leetcoders, ic0de, google, crackmes, RE and other!
-= Resources =-
Notepad++ = http://notepad-plus-plus.org/
OllyDbg by Oleh = http://www.ollydbg.de/
RegisterMe from tutorial = http://www.megaupload.com/?d=Z2WMYLW3
And FastScanner(optional) = http://www.mediafire.com/?zunqyifyjr5
That would be that!
All the best (Oh God Im tired),
dn5.
Like this:
Be the first to like this post.