downloadbrowseDynasty's ScrewMe #1

Download ScrewMe_#1_by_Dynasty.zip, 71 kb (password: crackmes.de)
Browse contents of ScrewMe_#1_by_Dynasty.zip

***********************************************
* ScrewMe #1 by Dynasty *
* *
***********************************************


Level 1, if that. 1st one I've ever made so tear into me if you like.
I suppose you can't expect much better from an inexperienced "coder".
Not original enough for you? Then suck my ass ;)

***************** Description ***************************
-- not packed
-- no crypto
-- very, very easy anti-xxx (if i may even call it that)
-- nice serial routine (well I like it, so sue me!)

******************* RULES: ******************************
-- GET THE GOOD BOY MESSAGE.
-- NO PLAIN STUPID PATCHING.
-- NO PLUGINS is always more fun ;)
-- TUTORIALS AND FEEDBACK MORE THAN WELCOME
-- KEYGEN the fuck out of it if you can (tho you might
need more than that...)

********************************************************
*************** Contact *********************

Send your tutorials, keygens, comments, candy, cute banging hot
girlfriends, or even naked pictures at

deezdynasty@gmail.com

Otherwise, I guess you can just post on my stupid forum :(

http://deezdynasty.xdir.org/forum/


~~~~~~~~~~~~~~~~ QUICK GREETZ ~~~~~~~~~~~~~~~~~~

== Ezéqui3l : of course, if it wasn't for him, there wouldn't even
be a CrackMe to start with. He simply ROCKS. THankS dude!

== Kaine : for his advice even tho I didn't manage to do half
of what he suggested! (Nxt time man, I promise ;))

== Me : cuz ... well just because you can't forbid me to.

== YOU : for taking an interest, as little as it may be, in this
piece of crap.

~~~~~~~~~~~~~~~~~~ Dynasty - 2K8 ~~~~~~~~~~~~~~~~~~~

Difficulty: 2 - Needs a little brain (or luck)
Platform: Windows
Language: C/C++

Published: 01. Mar, 2008
Downloads: 737

Rating

Votes: 5
Crackme is boring.

Rate this crackme:

Send a message to Dynasty »

View profile of Dynasty »

Solutions

Solution by Kalippan, published 05. mar, 2008; download (82 kb), password: crackmes.de or browse.

Kalippan has rated this crackme as nothing special.

Submit your solution »

Discussion and comments

hound
02. Mar 2008
Nice and easy one. Will post a solution if I have time to write it up :).
hound
02. Mar 2008
Actually, upon writing the solution realised it doesn't quite work. There is a bug in this.

When you are checking that all the comparisons were correct, the final one on the registration file doesn't work because you add 0x14 to the count, but you only ever increment the count 0x13 times when checking through the file.

Loop checking through file:

004019F3 |> /83BD 38FFFFFF 12 /CMP [LOCAL.50],12 ; Loop 18 times
004019FA |. |7F 34 |JG SHORT ScrewMe_.00401A30
.....
00401A21 |. 8D45 D0 |LEA EAX,[LOCAL.12]
00401A24 |. FF00 |INC DWORD PTR DS:[EAX]

.....
00401A2E |.^\EB C3 \JMP SHORT ScrewMe_.004019F3

You only ever increment LOCAL.12 0x13 times at maximum, yet your logic below is expecting 0x14 times.

00401A4B |. 8D0403 LEA EAX,DWORD PTR DS:[EBX+EAX]
00401A4E |. 83C0 14 ADD EAX,14 <== But from the loop, you can only get 13
00401A51 |. 3945 D0 CMP [LOCAL.12],EAX

As it stands, you can never pass this check, because even if it is all correct you even up 1 short on this comparison.
hound
02. Mar 2008
So, are you saying I'm wrong, or just quoting the string in the file :)?
Dynasty
Author
02. Mar 2008
Sorry... had to delete soychino's comment, saying too much for the ones who want to really try it out and reverse this themselves... ;(
Dynasty
Author
02. Mar 2008
hound: for your info, it has already been keygenned by two people -- however, no tutorials yet, so I'm working on one myself, that I plan on putting up on my website meant for newbie reversers.
Did you at least find a valid serial for your name though?
HMX0101
03. Mar 2008
@hound, you're wrong... you've probably see that variable [LOCAL.12] is initialized as zero at the start of the routine:

00401640 |. C745 D0 00000000 MOV [LOCAL.12],0 ; |

But after the second sprintf it get incremented by 1:

00401851 |. 8D45 D0 LEA EAX,[LOCAL.12] ; |
00401854 |. FF00 INC DWORD PTR DS:[EAX] ; |

So, the first check can be passed sucessfully... remember first part = 4, second part = 8... and the '1' which you've been missing :)

4 + 8 + 1 = 13

Now the second part (keyfile), if you see code carefully you will look another 'incrementation' of this variable at this point:

0040195B |. C74424 14 80000000 MOV DWORD PTR SS:[ESP+14],80 ; |
00401963 |. C74424 10 03000000 MOV DWORD PTR SS:[ESP+10],3 ; |
0040196B |. C74424 0C 00000000 MOV DWORD PTR SS:[ESP+C],0 ; |
00401973 |. C74424 08 01000000 MOV DWORD PTR SS:[ESP+8],1 ; |
0040197B |. C74424 04 00000080 MOV DWORD PTR SS:[ESP+4],80000000 ; |
00401983 |. 8D85 68FFFFFF LEA EAX,[LOCAL.38] ; |
00401989 |. 890424 MOV DWORD PTR SS:[ESP],EAX ; |
0040198C |. E8 6F020000 CALL <JMP.&KERNEL32.CreateFileA> ; \CreateFileA
00401991 |. 83EC 1C SUB ESP,1C
00401994 |. A3 44504000 MOV DWORD PTR DS:[405044],EAX
00401999 |. 833D 44504000 FF CMP DWORD PTR DS:[405044],-1
004019A0 |. 75 05 JNZ SHORT ScrewMe_.004019A7
004019A2 |. 8D45 D0 LEA EAX,[LOCAL.12]
004019A5 |. FF00 INC DWORD PTR DS:[EAX]

So, if the keyfile doesn't exists your variable will be increased by '1' again! and this time its not good :)

And if the keyfile contains the valid string, variable will be incremented by 19...

13 + 19 = 32

There exists a bug?... no ;)
Kalippan
03. Mar 2008
I think there is another bug in this...
give the name 'zzzzzzzzzz'
can u find a valid serial for this one??....
there are 2 parts for the serial... rite?
when the length of the first part reaches 5.. i think there is a bug in the comparing.....

if u found a valid key plz send it 2 me...
hound
04. Mar 2008
@Dynasty, yes I wrote a keygen, the serial and the whole thing was very straight forward.
@HMX0101. Thanks for the explanation. Not sure what went wrong when I stepped through it with a proper keyfile and serial, but may have a look at it again. Probably laziness not spotting a problem somewhere.

The thing is, my serial passed the first test, but then after the keyfile and that final test (from which it incremented each time) it was 1 below. So, I don't see how I missed the '1' earlier.
hound
04. Mar 2008
Anyway, my approach probably wasn't best. I should have reviewed through it before raising a 'problem'. Was just in a bit of a rush. Thanks for the crackme Dynasty, and the advice HMX0101.
Kalippan
04. Mar 2008
i have submitted a solution
Dynasty
Author
05. Mar 2008
Kalippan: --> Thanks for the little solution ;) was a pretty good job
Kalippan
06. Mar 2008
Good Crackme...........
Dynasty
Author
09. Mar 2008
I submitted a keygen for it, waiting for the admins to validate it... Im making a detailed tutorial but it's in french and I'm WAAAAAY too lazy to translate it :S
xylitol
10. Mar 2008
i like the cheat anti olly :]
DrPepUr
12. Mar 2008
I have a video solution @

http://video.reverse-engineering.net/index.php?cat=16

If anyone wants to check it out..

BTW Dynasty...nice keygenme!
Dynasty
Author
21. Mar 2008
Thanks DrPepUr :)

For the ones who wanna check it out here's the link to the tutorial (in french unfortunately for most of you) and the keygen:

http://deezdynasty.xdir.org/cours/TutoScrewMe1.pdf
http://deezdynasty.xdir.org/download/ScrewMe_#1_by_Dynasty.zips/keygen.zip

Enjoy ;)

You may leave your comment, thoughts and discuss this crackme with other reversers here.
Acting childish will not be tolerated.
HTML and such will be left as-is, so don't try.