Jump to content
Tuts 4 You

[keygenme] Very Easy Crackme


Guest mcpower

Recommended Posts

try this, it's for beginners, no special knowledge required.

do not patch, make a keygen

Below is a dump with comments of where the license number is processed and then compared to serial number input by the user.

00401077  |> DCC0		   FADD ST,ST							  ;  license number ^ 2
00401079 |. DC05 F0214000 FADD QWORD PTR DS:[4021F0] ; add 753
0040107F |. DC0D E8214000 FMUL QWORD PTR DS:[4021E8] ; multiply 333
00401085 |. DC25 E0214000 FSUB QWORD PTR DS:[4021E0] ; sub 13
0040108B |. DC25 D8214000 FSUB QWORD PTR DS:[4021D8] ; sub 15
00401091 |. DC5C24 10 FCOMP QWORD PTR SS:[ESP+10] ; compare
00401095 |. DFE0 FSTSW AX
00401097 |. F6C4 44 TEST AH,44
0040109A |. 7A 12 JPE SHORT cm260807.004010AE
0040109C |. 68 98214000 PUSH cm260807.00402198 ; ASCII "Absolutely correct...
"
004010A1 |. FFD6 CALL ESI
004010A3 |. 83C4 04 ADD ESP,4
004010A6 |. 33C0 XOR EAX,EAX
004010A8 |. 5F POP EDI
004010A9 |. 5E POP ESI
004010AA |. 8BE5 MOV ESP,EBP
004010AC |. 5D POP EBP
004010AD |. C3 RETN
004010AE |> 68 B0214000 PUSH cm260807.004021B0 ; ASCII "Wrong answer, have a closer look !

So basicly we want to square the license number, multiply by 333, and subtract 13, then 15.

So keygen;

#include <iostream>
#include <string.h>using namespace std;int main(int argc, char* argv[])
{
int license; cout << "KeyGen Solution for 'mcpower's Kegenme 260807'" << endl << "cracked/coded by zart" << endl;
cout << "Enter a license number: "; cin >> license; cout << "Serial number: " << ((((license*2) + 753) * 333) - 13) - 15 << endl; return 0;
Link to comment
Share on other sites

At first you say:

FADD ST,ST ; license number ^ 2

Which is err wrong since '^' means 'power' and not *...

And:

basicly we want to square the license number

You did it correctly in your source though :P

Might confuse a few people, just wanted to mention it :)

Link to comment
Share on other sites

At first you say:
FADD ST,ST ; license number ^ 2

Which is err wrong since '^' means 'power' and not *...

And:

basicly we want to square the license number

You did it correctly in your source though :P

Might confuse a few people, just wanted to mention it :)

I know what I wrote. Short hand math for myself, I use the carrot (^) as a 'raise to the power of'...

number^2 is squared... which is the same thing as number * 2. which is the same thing as number * number, which is the same as pow(num,2)...

;)

Just my math short hand when I'm writing on paper

Link to comment
Share on other sites

I still don't get it :cc_confused:

Of course '^' means 'raise to the power of' (dunno the exact denotation for it)

-> x ^ 2 == x * x

number^2 is squared... which is the same thing as number * 2

Did I miss something ? x ^ 2 == x * x but x * x != x * 2

That only applies if x is 2 ;)

Either you use ^ & * interchangable or I'm too dumb to understand the logic behind your signs...

Square means 'times two' for you ?

Link to comment
Share on other sites

Hi.

I'm completely new to this. Could you please tell me which tool you used for opening the file the way you did?

And can you please explain how you were able to extract numbers from this:

00401077  |> DCC0		   FADD ST,ST							 ;  license number ^ 2
00401079 |. DC05 F0214000 FADD QWORD PTR DS:[4021F0] ; add 753
0040107F |. DC0D E8214000 FMUL QWORD PTR DS:[4021E8] ; multiply 333
00401085 |. DC25 E0214000 FSUB QWORD PTR DS:[4021E0] ; sub 13
0040108B |. DC25 D8214000 FSUB QWORD PTR DS:[4021D8] ; sub 15

Thank you so much :)

Link to comment
Share on other sites

I still don't get it :cc_confused:

Of course '^' means 'raise to the power of' (dunno the exact denotation for it)

-> x ^ 2 == x * x

number^2 is squared... which is the same thing as number * 2

Did I miss something ? x ^ 2 == x * x but x * x != x * 2

That only applies if x is 2 ;)

Either you use ^ & * interchangable or I'm too dumb to understand the logic behind your signs...

Square means 'times two' for you ?

Sorry, dumb moment, disregard my "num*2" lol...

The program used was Ollydebug

Link to comment
Share on other sites

Got it. Understood the code a little better after watching lena's tut #1. I have now understood why I did what when I wrote a keygen. This was a good exercise, compared to other keygens for noobs I have found up till now. I found one where the key is supposed to be random symbols. I think they were from ASCII >128. That sucked a little. But this one is NICE... Keep up the good work, and thanks for the experience.

Link to comment
Share on other sites

i wish if there is a simple tool to make patches and kegen instead of lenthy reverse engineering,

i dont know if there is any software which help you t o build a patch or keygen . very simple just put the name and of the software you want to make a kegen or patch and click on make keygen or make patch and walahaaaaaaaaaaaaa

take care , :wub:

Link to comment
Share on other sites

i wish if there is a simple tool to make patches and kegen instead of lenthy reverse engineering,

i dont know if there is any software which help you t o build a patch or keygen . very simple just put the name and of the software you want to make a kegen or patch and click on make keygen or make patch and walahaaaaaaaaaaaaa

take care , :wub:

where would be the fun then?? :P

Stunt.

Link to comment
Share on other sites

  • 4 weeks later...
  • 3 weeks later...

do you mean for this crackme ?

or for general cracking ?

for general cracking dUP is quite useful....

im sure youll be able to find it in the forum somewhere.

Link to comment
Share on other sites

  • 3 weeks later...
is there any ready made patch or crack maker ?

Almost all licenses uses different algros to generate a valid key, therefore you can't really make a general crack/patch maker.

And all coding is different too, unless it's from the same company/an update.

You could make a database that it searches through though, but someone still has to make the patches/cracks, and those databases would be rather large since there are lots of software and different versions of everything. :)

And all the fun in Reversed engineering would be lost, and you wouldn't learn anything new :P

Edited by ante0
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...