PDA

Просмотр полной версии : Мой старый crackme :)


drmist
02.08.2007, 11:09
Уже не помню, в честь чего и как давно писал, где выкладывал. Даже сорсов не сохранились.
В общем программка лежит здесь:
http://www.stnc.ru/ftpdrmist/other/crackme0.exe

Расчитана на нубов, подсказок нет. Задача - подобрать ключ для своего ника. Кто первым закейгенит получит +10.

dmnt
02.08.2007, 12:44
ну здравствуй, отравитель :)
во первых строках письма шлю тебе превед. у меня упорно не желает выделять память по адресу 0400000h, поэтому пришлось его малость переделать под себя
должно подойти:
dMNt
AdMNtdMNtdMN0d0N4d8N01214161810B

SHAG
02.08.2007, 20:57
Name:SHAG
Serial:SErIaL_is_VaLId_cracker_by.Shag"
Вот такой серийник у меня получился :D

drmist
03.08.2007, 21:43
dmnt
Вы ведь, каэцо, уже как-то его ломали? ))
SHAG
lol )

dmnt
04.08.2007, 11:03
dmnt
Вы ведь, каэцо, уже как-то его ломали? ))
ага, чего бы хорошую вещь по второму разу не сломать? :)

drmist
13.08.2007, 00:08
Лучшеб кто-нить ее закейгенил %) Я думал, интузиазма будет больше =/

0x0c0de
13.08.2007, 14:45
Ну подобрать так подобрать.

0xc0de
abcdea789012345678i0a2c4u6080_U0

В win xp память по этому адресу не выделяецц0.. Пришлось под виртуальной 2000 ломать. Ибо переделывать лень)

EB_FE
14.08.2007, 08:16
Подскажите как под win2000 файл открыть?
что там не так с VirtualAlloc?

Gen1rus
14.08.2007, 14:56
Подскажите как под win2000 файл открыть?
что там не так с VirtualAlloc?
Что именно не так? В чем проблема?

EB_FE
14.08.2007, 15:18
Gen1rus
В свойствах выбери эмуляцию под вин2000 и увидишь в чем

ZaCo
18.08.2007, 20:31
хоть вариантов строки подходящей под значение хеш-функции уйма, но делать нормальный перебор значений мне показалось все-таки не тривиально; плюс ко всему можно использовать только печатаемые символы.

#include <stdio.h>
#include <string.h>
//
//super xek keygen by ZaCo for drmist crackme :)
//
int main(int argc, char* argv[])
{
char nickname[]="ZaCo";
char charset[]="ABCDEFGHIJKLMNOP";
int cs_len=strlen(charset);

char key[0x20];
char BL=0,DL=0,BH,DH;
//
int i=0, len=strlen(nickname);
for(;;)
{
BL+=nickname[i++];
if(i>len) break;
DL+=nickname[i++];
if(i>len) break;
}

BL--;
memset(key,charset[0],0x20);
//ïîäñòðàèâàåì key ïîä BL

DH=charset[0]*0x10;

unsigned char temp=BL-DH;
i=1;
while(temp>cs_len-1)
{
temp-=cs_len-1;
key[i]=charset[cs_len-1];
i+=2;
}
key[i]=charset[temp];
DH=BL;

//ïîëó÷àåì íóæíûé BH
BH=((0xB1-DH)^DL)-BL;

//ïîäñòðàèâàåì key ïîä BH

temp=BH-charset[0]*0x10;
i=0;
while(temp>cs_len-1)
{
temp-=cs_len-1;
key[i]=charset[cs_len-1];
i+=2;
}
key[i]=charset[temp];
//
printf("%20s",key);
return 0;
}
//---------------------------------------------------------------------------

идея в том, что используется !отрезок! печатаемых байт размером не меньше 16, для того чтобы можно было их суммой заполнить промежуток 0..255 и по любому никнейму можно было бы сгенерировать ключ.