downloadbrowsesKiller's skilLa_keyGenMe#3

Download skilLa_keyGenMe#3.zip, 1 kb (password: crackmes.de)
Browse contents of skilLa_keyGenMe#3.zip

This crackme was coded in pure asm, it has an anti-debuger trick and a special feathure. This is very easy for newbies.

You're not allowed to patch and to bruteforce, keygen only.

Sorry for my bad english.


have fun, skilLa

Difficulty: 2 - Needs a little brain (or luck)
Platform: Windows
Language: Assembler

Published: 25. Sep, 2006
Downloads: 618

Rating

Votes: 5
Crackme is nothing special.

Rate this crackme:

Send a message to sKiller »

View profile of sKiller »

Solutions

Solution by Kostya, published 27. sep, 2006; download (30 kb), password: crackmes.de or browse.

Kostya has rated this crackme as nothing special.

Submit your solution »

Discussion and comments

geeko
26. Sep 2006
Your proggy does not run on my Win 2k
geeko
26. Sep 2006
What kind of trick is that? The proggy starts with 'exitprocess' ?!?!!? and we cannot patch ?!?!!
BaKaE
26. Sep 2006
patch means the algo or good-boy-jump, i believe, something like that (exitprocess) can be patch
jB_
26. Sep 2006
geeko : no patching means that the program can be registered with a keygen without any patch. To study the algo you can obviously patch it.

sKilLa: nice crackme. You should increase the difficulty now.
geeko
26. Sep 2006
Any proggy is supposed tu start before 'register it'
At least we must know if that 'exitprocess' is intentionally or bug?
jB_
26. Sep 2006
the "ExitProcess" routine is anti-debug.
If your program doesn't start when you don't debug it, it is a bug. Else it is ok.
l0calh0st
26. Sep 2006
Good trick...hahaha.....
geeko....look where it is jumping ;)
geeko
26. Sep 2006
U didnt understand. The proggy doesn run at all inside nor outside de debugger! I dont see any jump before the exit.I tried it on win 2000 and NT.
BoR0
26. Sep 2006
ExitProcess protection is at 004011C8. Just nop the jump.
geeko
26. Sep 2006
skiller, the prog is supposed not to run at all?
BoR0
26. Sep 2006
Ah, SEH tricks. :) Algo is pretty simple.

We should trick the SEH so it lands us here:
0040116C $ 8B4C24 0C MOV ECX,DWORD PTR SS:[ESP+C] ; Structured exception handler
00401170 . 8BA1 C4000000 MOV ESP,DWORD PTR DS:[ECX+C4]
00401176 . 64:8F05 000000>POP DWORD PTR FS:[0]
0040117D . 83C4 04 ADD ESP,4
00401180 .^EB 8E JMP SHORT skilLa's.00401110

Nice crackme, anyhow.
geeko
26. Sep 2006
I passed the SEH. Now I am backtracing from 00401137
HMX0101
26. Sep 2006
I have bypassed the exitprocess and SEH sucessfully, but i can't get the first condition :P
geeko
26. Sep 2006
what first condition? at 401071 checks for the length of name.
HMX0101
26. Sep 2006
004010A0 . 8B06 MOV EAX,DWORD PTR DS:[ESI]
004010A2 . 8D3D 46304000 LEA EDI,DWORD PTR DS:[403046]
004010A8 . 8B1F MOV EBX,DWORD PTR DS:[EDI]
004010AA . 33C3 XOR EAX,EBX
004010AC . 3D 37130000 CMP EAX,1337

I know here it load the last 4 chars of the serial, and the first 4 chars of the name and xor it, but i can't reverse that :(
l0calh0st
26. Sep 2006
And it could be level 2 :)
ghostz
26. Sep 2006
Hi,
HMX0101, you can reverse it easy!

First routine of serial
Name = ghostz
Constant = 1337 hex value

Inverse 4 characters ghos = sohg
sohg hex value = 736F6867
1337 = sohg xor (part of serial)
(part of serial) = 1337 xor sohg

736F7B50 = 1337 xor 736F6867
736F7B50 = so{P
Inverse it so{P = P{os
Part of serial = P{os

I use 32bit calculator v1.7 by cybult

----------------------------------------------------
I bypass SEH tricks without patching, I put a Breakpoint, Hardware on execution in 40104A Run and trace with F8.

Good job sKiller ;)
HMX0101
26. Sep 2006
After i leave the last message, i found the way to reverse it...

Anyway thanks, ghostz :)
D4ph1
26. Sep 2006
The last part confuses me.
It must be : (3rdChar)^2 - (4thChar)*68h +0A8Ch = 0 .
But if we solve by 3rd or 4th char the result is wrong!
I cant understand why....
HMX0101
26. Sep 2006
@D4ph1:

I think it must be:
((1stChar)^2 - ((2thChar)*68h) + 0A8Ch = 0
Kostya
26. Sep 2006
Hm..Maybe it is level 1.6..
D4ph1
26. Sep 2006
@HMX0101:
No I mean the second check before the second bad boy message here :

00401130 . 2BC3 SUB EAX,EBX
00401132 . 05 8C0A0000 ADD EAX,0A8C
00401137 . 83F8 00 CMP EAX,0

Not the check with "DIV AL"...
D4ph1
26. Sep 2006
Now i see what i missed :p
Kostya
26. Sep 2006
I write a solution..
EvOlUtIoN
26. Sep 2006
Solved! the first part of serial need some brain more, but is equally simple...very nice crackme!
sKiller
Author
26. Sep 2006
Thanks for your nice comments. :)

For the second part of the code, you just must feel it :D
I think in a few days I'll code an harder one.
HMX0101
26. Sep 2006
This is a easy one, i'm waiting for a really harder keygenme :)

Anyway, good job sKiller :P

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.