Compare CL with 00 Are we at the end of our Name ?
Multiply ECX (43) with EAX (01) EAX now holds 00000043 (43*1=43)
Increase EBX Points to the next Char
Move Second Char in CL Which is "o" (Hex = 6F)
Compare CL with 00 Are we at the end of our Name ?
Multiply ECX (6F) with EAX (43) EAX now holds 00001D0D (6F*43=1D0D)
Increase EBX Points to the next Char
And so on...
At the end it also does "and eax, 0FFFFFFF" this is to make the last Character a "0" so that the Serial won't be negative :)
Ok, now the final result is within EAX , now when you get out of this CALL you'll see that it moves EAX to EDI.
And then it compares ESI ("Fake" Serial) with EDI ("Real" Serial) very easy huh? :)
Now to know our "Real" Serial (In Readable Characters) we just do a "? EDI" and you'll notice a decimal value in SoftICE, my Serial was:
Name: CoDe_InSiDe
Serial: 156742880
Ok, that's it for the "Serial Sniffing" now on to the Patching :)
---> Let's Begin *** Patching ***
Ok, fire up W32Dasm and disassemble the file "CrackMe.exe", now we can get to the Patching place in 2 ways.
1. In W32Dasm go to "String Data References" and search for "That isn't it, keep on trying..." or the Good Guy message and double click on it, then trace a few
lines up till you see "je 004250AB".
2. Did you remembered where i said (in this file) "Remember this spot for Patching :)", well in W32Dasm you can go to the same offset by pressing (SHIFT+F12)
and then typing "00425091" and click OK.
When your there notice the line at the bottom of W32Dasm, it says:
Line:86494 Pg 1730 and 1731 of 1738 Code Data @:00425091 @Offset 00024491h in File:CrackMe.exe
The only important part for us is "@Offset 00024491h". Now open up an Hex-Editor and go to that offset "00024491".
We know that it needs to jump to make us succeed :) so we're going to put an "EB" into it, change it into this (Don't forget to close W32Dasm):
7418 ---> EB18
That's it save the file (or make a backup) and run it, now every Serial will work :)
You can also change this, notice the two bytes in front of the JE it's:
3BFE ---> (cmp edi, esi)
You can change this into:
3BFF ---> (cmp edi, edi)
Now it checks the "Real" Serial with the "Real" Serial so it's always correct :)
Or you can change it into:
3BF6 ---> (cmp esi, esi)
Now it checks the "Fake" Serial with the "Fake" Serial so that's also always correct :), have fun with it...
---> Greetings...
Everybody at TrickSoft (www.TrickSoft.net)
Everybody at Cracking4Newbies (www.Cracking4Newbies.com)