downloadbrowsecosty's Find the valid number.

Download costy_crackme_n3.zip, 27 kb (password: crackmes.de)
Browse contents of costy_crackme_n3.zip

You have to find a valid number.
No patching.
Bruteforcing allowed.

Difficulty: 1 - Very easy, for newbies
Platform: Windows
Language: C/C++

Published: 14. May, 2008
Downloads: 2010

Rating

Waiting for at least 3 votes
(we have only 2).

Rate this crackme:

Send a message to costy »

View profile of costy »

Solutions

Solution by MACH4, published 21. may, 2008; download (1147 kb), password: crackmes.de or browse.

MACH4 has not rated this crackme yet.

Solution by br0ken, published 21. may, 2008; download (7 kb), password: crackmes.de or browse.

br0ken has not rated this crackme yet.

Solution by Grubci0, published 21. may, 2008; download (3 kb), password: crackmes.de or browse.

Grubci0 has rated this crackme as quite nice.

The submission of solutions is closed.

Discussion and comments

DigitalAcid
14. May 2008
Nice and easy :).
costy
Author
15. May 2008
Good! DigitalAcid it seems you are solving all my crackmes. But I am still waiting for the solution to COSTY's Second Crackme - Crack this Bitmap Creator :-)
DigitalAcid
15. May 2008
Hehe, your crackmes aren't that hard yet :P.
I won't write a tutorial for this one, because i'll probably need to include a keygen =) (i made it partially selfgen).
The solution of your Bitmap Crackme is still in queue, but i don't know if it will be a valid solution.
costy
Author
16. May 2008
A keygen isn't needed.
There is no possibility to find a valid number without bruteforcing. <REALLY IMPOSSIBLE>
If you want more information i'm am on msn costyn1@hotmail.it.
I don't want to explain the crackme here... :-)
DigitalAcid
16. May 2008
Well, the bruteforcer would be the keygen :D.
If only i could show the correct number in the crackme.
Now it only shows the goodboy message after calculating the right number.
I didn't patch, i made an inline bruteforcer ;).
Maybe this week-end i'll write a tutorial then.
costy
Author
16. May 2008
If you modified the exe file to do a self bruteforce... it is not patching but PROGRAMMING.
So it is a good solution.
To show the number inside the crackme you can call SetDlgItemInt.
It is strange I help people to crack my program. :- ))
DigitalAcid
16. May 2008
I tried the SetDlgItem, but the value is in hex.
Also, i need to find the right handle first because there are several GetDlgItems ;).
Grubci0
16. May 2008
Nice crackme. :) algo for serial is simple. I made solution and something like keygen day ago. Now waitin for moderator.
xylitol
16. May 2008
There is no possibility to find a valid number without bruteforcing

Impossible Is Nothing
Rezert
16. May 2008
lmao. this is hard. i dunno why it's 1...or maybe im just an idiot? it's probably the latter. i just started OllyDbg the other day. lol. anyways, i can patch most things easily but can't do the whole find the number thing
Grubci0
17. May 2008
keep it going ;) algo is just a few lines. i can say there is many good numbers. still waiting :p
obnoxious
17. May 2008
Eh! Do we really need to bruteforce this baby. It was pretty simple a number of valid numbers between 10000000-99999999 can be found!
DigitalAcid
17. May 2008
@obnoxious: not every number is valid :).
obnoxious
17. May 2008
@ DigitalAcid I never meant all numbers are valid. I meant a specific few or better still a specific kind. ;)
Grubci0
17. May 2008
Bad luck, i haue send damaged archive with my solution (mod cant open it). i will haue access to my pc at monday and then will send again, to author too.
costy
Author
17. May 2008
There are a lot of valid number. I don't understand DigitalAcid's problem. You have to use SetDlgItemInt passing the same handle used with GetDlgItemInt. What are you saying about SetDlgItem?? You should use SetDlgItemINT ****INT**** Bye....
costy
Author
17. May 2008
just a little help 10000019 is valid
DigitalAcid
17. May 2008
Yeah, that's the first number my bruteforcer found :P.
costy
Author
18. May 2008
REVERT. Difficulty is 1 for me, but you could have a problem with this becouse it's a math joke.
Grubci0
18. May 2008
MODULO joke i can say... ;)
ok im at comp, will send new solution ;)
costy
Author
18. May 2008
I don't know what modulo means in English. I tried to find it in the dictionary. There isn't.
DigitalAcid
19. May 2008
I think he means "modulus" a.k.a. "mod".
Grubci0
19. May 2008
no i mean modulo dividing ;)
DigitalAcid
19. May 2008
Same thing =).
Some random text here because short message don't work O.o.
costy
Author
19. May 2008
Yes same thing. DigitalAcid invented a trick to write short messages adding "Some random text here because short message don't work O.o.". He cracked crackmes.de site. :-)
Grubci0
19. May 2008
:))) congratulations
obnoxious
19. May 2008
Eh! No solutions for this 1 as yet.
DigitalAcid
19. May 2008
Don't worry, i'm sure there are some solutions waiting ;).
costy
Author
19. May 2008
There are a lot of people waiting. DigitalAcid did you send a solution??
MACH4
19. May 2008
Just done one, will upload later

MACH4
costy
Author
20. May 2008
Good Job MACH4
Some random text here because short message don t work O.o
DigitalAcid
20. May 2008
Yes, i uploaded a solution.
Included a bruteforcer.
MACH4
20. May 2008
brute force for a single valid number or a small range of test numbers works ok.
Trying to get all valid numbers in the range of 10000000 to 99999999 would take appx 8.9E14 loops or in real terms something like 137 years.
Thats why I don't like brute force crackmes but this one is much easier because of the many valid numbers!
MACH4
20. May 2008
Also interesting is the amount of cpu usage, mine is 64 bit but in xp is firing only on one cylinder. so a full 50% usage...
costy
Author
20. May 2008
I think that this will be the crackme with the greatest number of solution.
Nice record :-))))
obnoxious
20. May 2008
mach4 if u think the range from 1000000-99999999
is huge just think i made my bruteforcer to find all nos frm 1-99999999
costy
Author
20. May 2008
What are you doing Obnoxious??? Valid numbers must be greater then 10.000.000
obnoxious
20. May 2008
yeh i know man it was just for fun. i can specify an input range that the bruteforcer can start with. so i can use a starting number between 1-9999999 as i like.
costy
Author
20. May 2008
Yes... I suggest you to start from 10.000.001 :-D
obnoxious
20. May 2008
ah! guess u forgot i told u what logic ur crackme was applying in p.m. so really i dont have to brute force it to find valid serials i just made a brute forcer as every 1 else was doin it ;-)
costy
Author
20. May 2008
I don t forgot. :-D I'm joking.
I suggest doing a competition. Who will program the fastest bruteforcer??
DigitalAcid
20. May 2008
I think we all will have the same speed of bruteforcer.
After all, it's only increasing our input and looping through the algo over and over and over and over, and over.

Ps: i want to see those crackmes in queue =P. I'm bored atm.
costy
Author
20. May 2008
I don't think so there are some math algoritmics to find THAT type of number...
obnoxious
21. May 2008
oH! costy ther are a number of algos that can find that kind of numbers n they are pretty fast. they can generate upto 1billion within a minute. check this site out i will send u the link in p.m
obnoxious
21. May 2008
did any1 verify the serials generated by the brute forcer. in my case 1 or 2 invalid serials pop out continually. :( cant figure out why.maybe its the same for all!!!!!!!
DigitalAcid
21. May 2008
Yeah, i encountered 2 invalid serials when i bruteforced some with Olly. It's allways the same invalid one.
I noticed it must be something with the stack.
Unfortunately i didn't save them.
costy
Author
21. May 2008
So... is the problem inside my crackme?? Or is it inside the bruteforcer.
If the numebers are invalid you can post it on crackmes.de without problems.
costy
Author
21. May 2008
Anyway I'm going to publish the source when the first solution will be accepted.
MACH4
21. May 2008
can you post a couple of invalid numbers you found!
I will check them here...
obnoxious
21. May 2008
here r the invalid serials. sorry the r in hex i cd make my bruteforcer to show hex values instead of decimal.

9896cd
9896d7
9896d9

after these there were valid serials but i guess invalid numbers will pop up continually.:=0
MACH4
21. May 2008
Thanks for the numbers, no they are all invalid here.
Must be something wrong with your bruteforcer

9896cd = 10000077 = invalid
9896d7 = 10000087 = invalid
9896d9 = 10000079 = invalid

There are 2 valid numbers in the lowest 100
& 6 valid numbers in the 100 to 200 range

maybe you need to zero some registers after each loop...
DigitalAcid
21. May 2008
Weird, the first 2 are invalid for me, but the last one is valid for me.
And yes, don't forget to zero the CCCCCC01 ;).
MACH4
21. May 2008
sorry, yes that third number is one of the two valid ones in that range! I wasn't concentrating! lol
obnoxious
21. May 2008
yes sorry found the problem with my prog. will fix it now n re upload my tut. thanks!!!!!!!!
costy
Author
21. May 2008
I don't know why the compiler used CCCCCC01. It's only a flag so it can be rapresented by one byte.
obnoxious
21. May 2008
my brute forcer is working properly.No probs now only valid serials are generated.;)
MACH4
21. May 2008
I think the compiler does that, computer can only use DWORD's so say if you used "push ax" (in the 32bit world) the compiler would push a DWORD to keep the stack balanced, Stack and heap are just memory so no doubt applies to your reserved BYTE as well, so you end up with the full register content...
DigitalAcid
21. May 2008
Well, it was CCCCCC00, but you only moved 1 byte (a 1) in there, so it became CCCCCC01.
If we don't reset it ourself, our bruteforcer will never find a valid number ;) (Except if the first one is valid of course).

Lol, i bet there are like 7 solutions for this one :O.
Mod will have a hard time choosing wich ones to accept (pun intended :P).
MACH4
21. May 2008
Don't forget that the following "AND" removes the C's before the test..
Anyway, I'm looking at So;x dos Crackme now, haven't done that stuff for years...
obnoxious
21. May 2008
no no it was not that i had forgotten to code some lines that set E&f. so instead of getting 9896cf i kept getting 9896cd
costy
Author
21. May 2008
Firts solutions arrived. They are really fine. I hope to read many others solution. I'm happy becouse a lot of people liked this crackme.
TiGa
21. May 2008
If all the solutions were approved as soon as they came in, the first one would accuse the others of cheating if their solution was slightly similar to his.

It also allows people to revise and improve their solutions.
DigitalAcid
21. May 2008
Hmm, mine got rejected, but the bruteforcer works fine.
It only shows the valid serial after the goodboy, after clicking the OK button...
obnoxious
21. May 2008
alas! my soln got rejected to made some stupid mistakes. but m undaunted n have uploaded anew version with all fixes as asked by tiga ;). m hoping n waiting
TiGa
21. May 2008
Self-bruteforcers are not allowed.
It is considered as patching.
For any crackme, we don't put much value in solutions that include patching, especially if other solutions were submitted that don't include patching.

This place is about learning new things, not repeating the same fishing or patching recipe to every level 1 crackme as soon as it comes in.

We don't have to approve every solution that comes in.
We pick only the better ones, it is about quality, not quantity or speed.
costy
Author
21. May 2008
Please send invalid solution to costyn1@hotmail.it. I'm curious.
costy
Author
21. May 2008
MATH 4 analized my crackme in PEiD and wrote in his video solution: "[DEBUG] means there will be a load of debug calls in there, which is probably left to cause confusion for us!". I don't want to cause confusion for anybody, I don't know what [DEBUG] means.
MACH4
21. May 2008
Hi costy,
I only brought attention to it because I thought it was diliberately there to create some diversion from the important loop!
I don't use visual C but suspect it is debug version (to help with debugging) until when its published, then the exe gets cleaned...
costy
Author
21. May 2008
Yes I verified MACH4. It's true. Anyway the source is this one...

// crackmetre2.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include "resource.h"


// Global Variables:
HINSTANCE hInst; // current instance





LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, 0, (DLGPROC)About);
ExitProcess(0);
}



// Mesage handler for about box.
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
SendMessage (GetDlgItem(hDlg, IDC_EDIT1),EM_LIMITTEXT, 8,0);
return TRUE;
break;

case WM_COMMAND:
if (LOWORD(wParam) == IDCHECK)
{ int number;
int number2;
int resto;
bool divisibile = false;
number = GetDlgItemInt(hDlg, IDC_EDIT1, 0, 0);
if (number > 10000000) {
ShowWindow(GetDlgItem(hDlg, IDC_EDIT1),0);
ShowWindow(GetDlgItem(hDlg, IDCHECK),0);
ShowWindow(GetDlgItem(hDlg, IDC_WAIT),1);
UpdateWindow(hDlg);
for (number2 = number-1; number2 > 1; number2--){
resto = number %number2;
if (resto == 0)
divisibile = true;
}
ShowWindow(GetDlgItem(hDlg, IDC_EDIT1),1);
ShowWindow(GetDlgItem(hDlg, IDCHECK),1);
ShowWindow(GetDlgItem(hDlg, IDC_WAIT),0);
if (divisibile == false)
MessageBox (hDlg, "You win. Now write a tutorial :-)", "Champion!!", 0);
else
MessageBox (hDlg, "Invalid number!", "Error",0);


}
else
MessageBox(hDlg, "Number should be greater then 10000000 ;-)", "Little Hint", 0);
}
break;
case WM_CLOSE:
ExitProcess(0);
}
return FALSE;
}
costy
Author
21. May 2008
some words are in italian
resto = remainder
divisibile = divisible

about is the main (only) window I forgot to rename it.
souravipc53
14. Nov 2008
The Fact is that it is a prime nos. finding crackme. if you have any type of prime nos. findin software you can easily find out hundreds of prim nos. valid between 10000000 &99999999.

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.