Moje nowe crackme02

0

Zapraszam do rozwiązania mojego nowego crackme02....

http://uploading.com/files/c436dc97/crackme02.exe/

Zadanie znaleźć poprawne hasło do programu.

Powodzenia.

0

czekam na rozwiązania. Może zrobię wam crackme w javie...

0

no i jak tam analiza kodu mojego crackme?

0

Wirusa chyba nie ma, z resztą żadne wirusy nie są mi straszne na Linuksie i wine:p

Skompilowane w visual studio 2010 w systemie Windows XP.

Stringi komunikatów generujesz pętlami.

Jeszcze nie złamałem, później się pobawię w disassemblerze

0

A co sie dzieje za drugim naciśnięciem entera ? konsola mi zniknęła. Czy to znaczy że wygrałem ?

0

Moje crackme są ok. Fajnie by było gdyby rozwiązała je osoba która dopiero zaczyna się z tym zapoznawać. Polecam stronę:
http://tuts4you.com/download.php?list.17

Programy które polecam do crackowania:
OllyDbg + pluginy,
PEID,
IDA Pro( lub Free),
ImportRec,

no i oczywiście książkę "Art Of Assembly Language Programming" - Randal Hyde

1

Swoją drogą hasło brzmi YES-YU-CAN. Dwa pierwsze znaki są tylko xorowane za pomocą klucza, pozostałe dodatkowo z wynikiem poprzedniej operacji... W praktyce jakby przyjąć klucz za wyrażenie stałe, to w tym cudownym crackme nie ma niczego poza xorowaniem. [rotfl]

1

Pan poslac mnie. Ja byc ciemna murzyna, poprawic bledy Pana (dla ta sama sensowna wejscia dawac ta sama wyjscia - użyć konwersja eta!), niestety miec tylko Visuala 2008. Programa miec tylko 2kB wiec bac sie, że ma syfilisa, tak jak Pan TomRiddle.

0

nie mam zamiaru tego analizować bo tam pewnie coś złego siedzi. Podpuszczacie mnie...

1

Pan być głupi, murzyn nie podpuszczać. Pan byc cracker, Pan nie ufac statyczny analiza, Pan sie leczyc. Crackme nie koza. Pan tu przez zla dotyk nie zlapac syfa. Pana crackme, Pan porownac, takie samo, lepsze:

#include <stdio.h>
#include <string.h>

const int key[] = { 246, 95, -245, -245, -241, -241, -241, -245, -247, -241 };
const int val[] = { 175, 181, -19, 203, -99, 199, -27, 173, -27, 164 };

int main(void) {
        size_t i, len;
        char pwd[11];
        int p, chsum;
        int out[10];

        puts("Murzyn NNNa crackme 02.1, 22 lipca 2011, 02:48\n");
        puts("Podac wlasiciwe haslo?");
        fgets(pwd, sizeof(pwd), stdin);

        for (i = 0, p = 0, chsum = 0, len = strlen(pwd); i < len; ++i) {
                chsum += pwd[i];
                out[i] = p = key[i] ^ pwd[i] ^ p;
        }

        if (chsum == 715 && memcmp(out, val, sizeof(val)) == 0) {
                puts("Gratulacje - ty byc crackersem.");
        } else {
                puts("!!! Podane haslo nie byc poprawna...");
        }
        return 0;
}

Miec buffer overflow w kazda operacja? Nie miec. Miec stala matematyka na stala liczba? Nie miec. Gupio dobrane funkcje I/O miec? Nie miec. Miec ifa z dupa? Nie miec. Ta sama crackme? Ta sama. Pan tak zlecenia pisac to sie murzyn nie dziwic, Pana ludzie chciec linczowac.

0

nie miałem żadnych skarg ze strony ludzi którzy kupowali moje programy więc nie wiem o co chodzi z tym linczowaniem...

0

Pan pokazac zrodlo crackme, programisci ocenic. Wtedy zobaczyc czy ktos chciec linczowac.

0

ok pewnie dało się to lepiej zrobić ale ...chcecie to macie:

 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

static int properKey[] = { 175,181,-19,203,-99,199,-27,173,-27,164 };

void pokasz(int * napis)
{
	int i = 0;
	putchar('\n');
	while( napis[i]!=0 )
	{
	    putchar(napis[i]);
		i++;
	}
	putchar('\n');
}

void bla(int * keys , char * pass, int * nap1, int  * nap2)
{
	int buff[20];
	int len = 0;
	int i =0;
	int suma = 0;
	int bad = 0;
	buff[0] = '\0';
	len = strlen( pass );
	for( i= 0;  i < len ;)
	{
		suma+=pass[i];
		buff[i] = keys[i] & 0xCAFEBABE;
		buff[i] = buff[i] ^ 0xFA ^ pass[i];
		if ( i > 1 )
			buff[i] = (buff[i]) ^ (~ buff[i-1] );
		i++;
	}
	buff[i] = '\0';
	i = 0;
	//sprawdzanie
	for(  i = 0 ;i < len ;i++)
	{
		if ( buff[i]!=properKey[i] )
		{
			bad = 1;
			break;
		}
	}
	if ( bad == 1 || suma!= 715 )
	{
		pokasz( nap2);
	}
	if (bad == 0 && suma == 715 )
	{
		pokasz( nap1);
	}
		
}

int main()
{
	int keys[] = { 0xC, 0xA, 0xF, 0xE, 0xB, 0xA, 0xB, 0xE,0xC, 0xA };
	char buff[200];
	int napis1[] = 
	{
		71,114,97,116,117,108,97,99,106,101,32,45,32,106,101,115,116,101,115,32,99,114,97,107,101,114,101,109,10,0
	};
	int napis2[] = 
	{
		33,33,33,32,80,111,100,97,110,101,32,104,97,115,108,111,32,106,101,115,116,32,110,105,101,112,111,112,114,97,119,110,101,46,46,46,46,32,10,0
	};
	buff[0] = '\0';
	printf("Moje crackme 02, 20 lipca 2011 \n");
	puts("");
	printf("Podaj wlasiciwe haslo\n");
	scanf("%s" , buff );
	bla( keys, buff, napis1, napis2);
	getchar();
	getchar();
	return (0);
}

A oto źródła crackme03 które to usuneliście dzisiaj:

 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>

//name ma byc cyfrowe i zawierac liczby 12589744
int name_is_valid( char * name, int len)
{
	int i = 0;
	if ( len!=8 )
	{
		return 0;
	}
	for( i = 0; i < len ;i++)
	{
		if ( ! isdigit( name[i] ) )
			return 0;
	}
	return 1;
}

int serstr( char * name, char * serial, int len )
{
	int i = 0;
	int sr_len = 0;
	int n_val = 0;
	int n_val1 = 0;
	sr_len = strlen( serial );
	if ( sr_len != len )
		return 0;
	for( i = 0 ; i < len; i++ )
	{
		n_val = name[i] - '0';
		n_val1 = name[((i+3) % sr_len) ] -  '0';
		if (  (serial[i] - '0') != ((n_val + n_val1)%10))
			return 0;
	}
	return 1;
}

void grt()
{
	putchar('\n');
	printf("Gratulacje - To jest dobre rozwiaznie  \n");
}

void non()
{
	putchar('\n');
	printf("Podales zle dane \n");
}

int sprawdzaj(char * name )
{
	return 20;
}

int main()
{
	char name[200];
	char serial[200];
	int len = 0;
	int var1 = 0;
	int var2 = 0;
	puts("Crackme03 - (C) nnn, 22 lipca 2011 \n");
	name[0] = '\0';
	serial[0] = '\0';
	printf("Podaj imie \n");
	gets_s(name, 199);
	printf("Podaj serial \n");
	gets_s(serial, 199);
	len = strlen( name );
	var1 = name_is_valid( name, len);
	var2 = sprawdzaj(name);
	if ( var1 == 1 && var2 == 100)
	{
		grt();
	}
	else if ( var1 == 1)
	{
		var2 = serstr( name, serial, len );
		if ( var2 == 1 ) grt();
		else non();
	}
	else
	{
		non();
	}
	putchar('\n');

	getchar();
	getchar();
}
0
void pokasz(int * napis)
int sprawdzaj(char * name )
{
        return 20;
}
char buff[200];
//...
scanf("%s" , buff );

Masakra...

1 użytkowników online, w tym zalogowanych: 0, gości: 1