downloadbrowseBUBlic's MyVM #1

Download MyVM_#1_KeygenMe_by_BUBlic.zip, 35 kb (password: crackmes.de)
Browse contents of MyVM_#1_KeygenMe_by_BUBlic.zip

The name says it all - it's a VM.
The algo is quite simple, but you have to understand the VM.
I put valid userdata in the about if you find a bug.

Difficulty: 7 - Very hard
Platform: Windows
Language: C/C++

Published: 26. Jul, 2007
Downloads: 755

Rating

Votes: 4
Crackme is nothing special.

Rate this crackme:

Send a message to BUBlic »

View profile of BUBlic »

Solutions

Solution by waganono, published 09. aug, 2007; download (73 kb), password: crackmes.de or browse.

waganono has rated this crackme as quite nice.

Solution by KernelJ, published 07. aug, 2007; download (59 kb), password: crackmes.de or browse.

KernelJ has rated this crackme as quite nice.

Submit your solution »

Discussion and comments

opcode0x90
26. Jul 2007
The serial procedure is not in VM, kinda defeats the purpose of VM.
BUBlic
Author
26. Jul 2007
The serial procedure IS in the VM. Of course it's not difficult to patch it, but this is not your task.
KernelJ
27. Jul 2007
I found a line where you overflow one of your blocks of allocated memory by a whole DWORD! A 0xABABABAB dies every time it eats your serial lol. I'm not entirely sure what effect... if any... that has on, well... anything... though... Let's just call it a mistake...
KernelJ
27. Jul 2007
Another comment - does this crackme ever release ANY of the memory it receives. Definitely not all of it anyway... I wonder if it's possible to check your serial enough times to stop the thing working
BUBlic
Author
28. Jul 2007
Sorry for those little mistakes (due to the nature of allocating memory the effects aren't noticeable on my system, but could be fatal on an other). If any/none name/serial combination (see about) works then just patch:
004015C7 |. 68 00080000 PUSH 800
to:
004015C7 |. 68 00080000 PUSH 7FC
Thx KernelJ, those four bytes which could be overwritten are the most important ones.
KernelJ
28. Jul 2007
The effects weren't noticable to me either, but I knew I could make it noticable. So jammed the enter key held down on the serial checking button and the following error box (therefore filling up my RAM bit by bit) for about 50 mins roughly and then when I came back to the computer I stopped it, and when I clicked back on OllyDbg it took a few seconds to activate because it had to load everything again that was cached in virtual memory! Also I found that even though usually memory was coming from 0x08000000 or 0x0A000000 ranges now it was coming from 0x15000000. And checking memory dumps between this and 0x0A000000 the whole lot was filled with the same rubbish. So definitely memory leakage there...

That patch is not critical, but recommended. I don't see any reason why it would break any of the serial checking so don't worry about it.
waganono
07. Aug 2007
I just keygen this one, great work BUBlic!
I'll send you my disassembler & keygen as soon as possible.
Ox87k
07. Aug 2007
@waganono:
Another solution will be good (i think) for all of us. KernelJ did a great job with his solution but another one is good!
saitob
07. Aug 2007
Quote from 'About':
"Maybe there are still skilled reversers, who are able to keygen this one and will do so, but I don't think there will be a solution.
/Quote

This is a great example wichg shows that thing's don't allways end up as expected!
Great work BUBlic and KernelJ.
BUBlic
Author
07. Aug 2007
Indeed, the "and will do so" is actually the part of the sentence with the most weight (since before submitting I let some reversers, who are actually really skilled take a look at that; some said they could but the actually have to little free time atm.). And the same way, I suppose, it is at my Security Pow -2 keygenme, to write which I had to study all the algorithm description papers first (since it's a unusual algo), so I to break it ppl, actually, have to do same.
Howev, you've exceeded all of my expectations, great job, really!
waganono
07. Aug 2007
@BUBlic I'll just send you my work to your @. I'm writing a short tutorial now.
The VM is well coded and provides good functionalities, i really appreciate your work.
KernelJ
07. Aug 2007
[quote]some said they could but the actually have to little free time atm[/quote]

lol so what you're really saying is that I had too much time on my hands. Maybe true...

I did like the way your VM worked mostly. I think my main criticism at this point was how you handled the LEA value scaling (or didn't handle).

The way the actual bytecode itself was coded seemed very odd to me. Extremely inefficient compared to what was possible. Whether this was just an attempt to make it harder to reverse I'm not entirely sure...

Anyway, I have gained some valuable experience from completing this keygenme. So thankyou! And also thanks all for your comments on my solution.
waganono
08. Aug 2007
@BUBlic I just have sent my solution to mods.
@KernelJ I have read your tutorial and i see we don't have the same way to solve it, so I complete your explanations. You made good work, really. You seems to be a "still skilled reverser" :)
KernelJ
10. Aug 2007
Well I may as well read yours... Hmm, what on Earth is a 'kind of' MD5??
waganono
11. Aug 2007
Just cause of 4 classic cstes (+pad) : 67452301, EFCDAB89,98BADCFE,10325476. Do you have noticed them? Or maybe it is a well kwnow algorithm, hash? Do you know?

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.