downloadbrowseMatteo's Matteo KeygenMe

Download Matteo_CrackMe.zip, 7 kb (password: crackmes.de)
Browse contents of Matteo_CrackMe.zip

Hi!
I dare you to make an attempt to beat my first crackme. Impossible things happen inside.

The goal is to keygen the program.
Bonus: Try to document as many tricks as only possible.

Information:
- - The program uses a common mechanism to check whether it is registered or not.
- - It has been packed using some obfuscation methods so that it may be required to unpack the program before continuing.
- - Owing to antidebugger protections that have been added, anti-anti techniques might be useful.
- - Patching is not a necessity.
- - The program has successfully run under Windows 8 x64, Windows 7 x64, Windows XP x32. The last one only in Virtual Box environment.

EXTRA: Due to a kernel protection it's impossible to meet PacMan in Windows 8 (and probably any Windows x64).
If you want to meet PacMan (and you do!), run the program under Windows XP, attach a debugger on the fly and then read at the EntryPoint.

PS. Let me know if you can't understand some magic going on behind the scene.

Contact me by E-Mail "matteo.crackme@gmail.com" (GPG public key at hkp://keys.gnupg.net)
Fingerprint: 683E0BA7359F2830DBDE1D96ED59DF71FD861B1E

Good luck!
Matteo

Difficulty: 4 - Needs special knowledge
Platform: Windows
Language: Assembler

Published: 24. Feb, 2015
Downloads: 537

Rating

Votes: 4
Crackme is good.

Rate this crackme:

Send a message to Matteo »

View profile of Matteo »

Solutions

Solution by tamaroth, published 19. may, 2015; download (454 kb), password: crackmes.de or browse.

tamaroth has rated this crackme as quite nice.

Solution by baderj, published 19. may, 2015; download (88 kb), password: crackmes.de or browse.

baderj has not rated this crackme yet.

Submit your solution »

Discussion and comments

tamaroth
Moderator
25. Mar 2015
Is it intended that you calculated a checksum for 3 overlapping memory areas in code starting at 0x401041? You point there to memory at 0x401DCF and 22h iterations of lodsd are done, which means it ends at the address 0x401E57 which is way further than next check address 0x401CE1 which in turns overlap with next part of memory?
tamaroth
Moderator
25. Mar 2015
Don't mind me, I'm an idiot. I retract previous statement.
Matteo
Author
26. Mar 2015
seems that you unpacked first part, now you need to unpack second part and then starting to solve it.
feel free to ask anything, i will be happy to answer :)
desert2500
27. Mar 2015
This crackme checks a file with the name 'thekey.k'.I have a problem.At first,it comapare its 0x17 bytes with '0xD'.But then it check whether its 0x5th-0x20th identify with '0x0'.I think it is a logic fault.Or maybe I miss someting?
Matteo
Author
27. Mar 2015
i think you miss something
here it compare 0x15 bytes (push 15h) not 0x17 with 0xD
there are 3 compares two with 0xD and the last with 0x0
(tip: 0xD = \r = CR Carriage Return)
(tip2: check the returned value of the call ......)
that point shouldn't be hard but let me know :)
desert2500
27. Mar 2015
yes,i made a mistake. I will try again.
desert2500
27. Mar 2015
Hi,Matteo,when I try to unpack it,the function 'CloseHandle' can not be fixed correctly by Import fixer.It is the only bad function. As try to correct it when it is loaded in the memory,the crackme works well.Do you know how to solve it?
Matteo
Author
28. Mar 2015
I've sent you a private message
desert2500
30. Mar 2015
Ii is such a difficult crackme for me to solve,but luckily i found the correct anwnser in the end.For three days i didn't sleep well.Thanks to Matteo,a very good crackme~
tamaroth
Moderator
30. Mar 2015
desert2500: you plan on releasing the solution? I'm basically on the last part now, with my limited time I should be able to release a solution at the end of the week. Full one with the description of anti-debug methods and decryption routines.
Matteo
Author
30. Mar 2015
happy to see that you solved, and very happy to see that you liked it :)
desert2500
30. Mar 2015
tamaroth:Also i have no time until weekdays,maybe a tutorial later than you:) (And i am not sure if i can explain it Accurately).Anything would like to discuss please send a message to me.
Matteo
Author
30. Mar 2015
desert2500 sent me a working key file and thanks to it i have found that there is a "bug":
the program will accept keyfile that is not alphanumeric only.
I knew that the operation on the second serial was "wrong" because i was using all characters but i said to myself "who cares, there will be only 0s after and it will make no difference"
i was wrong! it makes difference :)
should i upload new version or not? i have no idea...
my idea was that only alphanumeric chars were allowed
but feel free to solve also with his trick :)
after all is my fault if it accepts "invalid" keys...
tamaroth
Moderator
30. Mar 2015
Just out of curiosity, desert2500 did you brutforce the seeds for srand in the last part? Because that's a lot of combinations ...
Matteo
Author
30. Mar 2015
i don't know what he have done but i have brutefurced it.
if you optimize it a bit in 7 min you can check all the keyspace (every seed).
if i'm not wrong there are 4 valid seeds (and only one other)
but 2 of the 4 create a key that is not alphanumeric and "should" be wrong
desert2500
30. Mar 2015
Matteo,I have made a keygen with python.It can produce all legal keyfile format.I have mail it to you.Please check it.
desert2500
30. Mar 2015
tamaroth,yes ,you have to bruteforce the seeds.
Matteo
Author
30. Mar 2015
it doesn't ask for name, and your name length is fixed at 4 but it works :)
tamaroth
Moderator
01. Apr 2015
keygen also done, write up should be done by the end of the week hopefully.
Matteo
Author
07. Apr 2015
IMPORTANT NOTE: WRONG EMAIL IN THE DESCRIPTION
my email is GMAIL.COM AND NOT .IT
i have read it many times before publish and there are still bugs in the description :)
andrewl.us
Moderator
19. May 2015
"bumping" this thread to the top to show baderj and tamaroth's thorough solutions, congrats
tamaroth
Moderator
19. May 2015
That "week" took over a month :D
Matteo
Author
20. May 2015
fantastic solutions!
congratulations to both!!
pacman trick still missing...
will someone document it?
although it doesn't work on newer windows it can be understood and documented.
check the last call, the one that show MessageBox, is full of tricks :)

i'm still amazed by your solutions!
now i need to make something new :)
see you soon...

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.