Сейчас на форуме: _MBK_, vsv1, ut2004 (+6 невидимых)

 eXeL@B —› Вопросы новичков —› CrackME
Посл.ответ Сообщение

Ранг: 21.8 (новичок)
Активность: 0.010
Статус: Участник

Создано: 27 апреля 2007 10:56
· Личное сообщение · #1

Мой первый кряк меня.
Кто взломает скажите пожалуйста как взломали и какой уровень крекми.

slil.ru/24297731




Ранг: 107.6 (ветеран)
Активность: 0.110
Статус: Участник

Создано: 27 апреля 2007 13:52
· Личное сообщение · #2

зАдОлБаЛи

-----
программистом не рождаются - им умирают




Ранг: 21.8 (новичок)
Активность: 0.010
Статус: Участник

Создано: 27 апреля 2007 14:10
· Личное сообщение · #3

Gambit пишет:
зАдОлБаЛи


Если задолбали то не открывай сообщение.
Но всетаки ты его хоть попробывал заломать?




Ранг: 107.6 (ветеран)
Активность: 0.110
Статус: Участник

Создано: 27 апреля 2007 14:59 · Поправил: Gambit
· Личное сообщение · #4

Пробовал.
Во-первых, он не запустился
Во-вторых, запустить его удается, но через , т.е. если взять ольку, в начале поменять флаг ZF с 0 на 1, потом обойти IsDebuggerPresent, то в этом случае выпрыгивает твое окошко.
В-третьих, писал ты его на дельфях, который весь код загадил - неохото в такой помойке рыться
В четвертых, в декомпиляторе ничего полезного не отображается. Если это твоя работа - то молодец.
В пятых, кхм.. Ну ладно, тебе и четырех хватит

-----
программистом не рождаются - им умирают




Ранг: 7.2 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 27 апреля 2007 15:21
· Личное сообщение · #5

Gambit пишет:
Во-первых, он не запустился

хм.. странно, у меня работает...
з.ы. то что это чудо на делфи писано, это сразу понятно, пейд его без проблем палит...
почти без проблем =)))




Ранг: 68.0 (постоянный), 6thx
Активность: 0.060
Статус: Участник

Создано: 27 апреля 2007 15:25
· Личное сообщение · #6

Вот приблизительный алго, для получения неких двух чисел, назовём их hesh1 и hesh2
В pass1 и pass2 подаем первый и второй пароли.
char pass1[256]={0};
char pass2[256]={0};
unsigned char xlam[256] = {
0x00, 0x08, 0xDB, 0x33, 0x45, 0xAB, 0x51, 0x29, 0x5E, 0x6C, 0x14, 0x79, 0x11, 0xD6, 0x0F, 0x4A,
0xE9, 0x5D, 0xC5, 0x53, 0xB1, 0xD7, 0xB7, 0x59, 0x29, 0x54, 0x76, 0x3E, 0xD2, 0x47, 0x52, 0x26,
0xDE, 0x49, 0xC5, 0xF8, 0x7D, 0xE2, 0xD2, 0x05, 0x23, 0x24, 0x7F, 0x05, 0x97, 0x02, 0xC5, 0xA5,
0xC4, 0xB4, 0x8E, 0x34, 0xAD, 0x75, 0xF3, 0xA4, 0xFE, 0x3E, 0xAC, 0x4B, 0x15, 0xC4, 0x7E, 0xE0,
0x82, 0x92, 0xF3, 0xAE, 0x56, 0x01, 0xB3, 0xFC, 0xC5, 0xBF, 0x32, 0x24, 0xE8, 0xC7, 0x96, 0xDC,
0xAF, 0x49, 0x17, 0xA0, 0x47, 0xDF, 0x29, 0x45, 0x8A, 0xF5, 0x2C, 0x28, 0x44, 0x2D, 0x93, 0x7F,
0x48, 0x27, 0x9B, 0xBC, 0xBE, 0x14, 0x13, 0x0F, 0x1B, 0xCA, 0xCD, 0x61, 0x9C, 0x6F, 0xBC, 0x7D,
0x57, 0xD0, 0xD0, 0x24, 0x17, 0x11, 0x0F, 0x31, 0xAB, 0x3A, 0x91, 0x40, 0x5D, 0xD5, 0x50, 0x50,
0xA7, 0xB0, 0xE6, 0x51, 0x7A, 0x4B, 0xC3, 0xBC, 0x8C, 0xB8, 0x68, 0x8A, 0x97, 0xE0, 0xAA, 0x1C,
0x78, 0x66, 0x1D, 0x0D, 0x8B, 0xAB, 0x14, 0xEB, 0xD5, 0xAD, 0xEC, 0x46, 0xB2, 0xBB, 0x7F, 0xA9,
0x28, 0x3A, 0xF1, 0x5D, 0x20, 0xFB, 0x4E, 0x0D, 0x19, 0xDD, 0x8D, 0xB1, 0x19, 0xAA, 0x04, 0x4F,
0xE6, 0x88, 0x53, 0x70, 0xE5, 0x58, 0x5A, 0x7C, 0x12, 0xD8, 0xC1, 0x2D, 0xEB, 0x7D, 0x20, 0xE3,
0x66, 0x34, 0xCD, 0x95, 0x1C, 0x9E, 0xEC, 0x89, 0x53, 0x72, 0x39, 0x2F, 0xB0, 0xFD, 0xA0, 0xB0,
0x89, 0x18, 0xBE, 0x25, 0x3B, 0xE0, 0xB6, 0x6F, 0xF9, 0x27, 0x0A, 0x2F, 0x02, 0x60, 0x64, 0x5C,
0x14, 0x73, 0x80, 0x75, 0xAC, 0xD0, 0x90, 0x40, 0x5E, 0x94, 0xDE, 0x9B, 0x41, 0xB1, 0x8E, 0xE0,
0x5C, 0x5C, 0x9E, 0xC6, 0x74, 0x34, 0xB2, 0xD5, 0xBF, 0xE5, 0x2F, 0xC5, 0x44, 0x4B, 0xB3, 0x74
};

DWORD buf=0;
int akk=0, hesh1=0, hesh2=0;

unsigned long __stdcall AlgoHesh(void*)
{
for(int i=0;i<256;i++)
{
buf = pass1[i] ^ pass2[i];
akk = xlam[i];
akk = akk + hesh1;
buf = buf ^ akk;
hesh1 = buf;
//------------------------
buf = pass1[i] ^ pass2[i];
akk = hesh2;
akk = akk + i;
buf = buf ^ akk;
hesh2 = buf;
}
return 1;
}


Чтоб пройти дальше hesh1 должен быть 7AC5
Далее идет такое:
hesh1++;
hesh2++;
AddFunc = hesh1+0x22de36+hesh2+22de35

, где AddFunc - это адресс функции, на которую нужно перейти.
Вот собстно и все.

Крякмис можно назвать "Найди меня", потому как не найдя адресс функции, вряд ли можно будет сбрутить нужную пару pass1/pass2

И получилось это произведение отстойое! Как можно намеренно пускать код хрен знает куда, в случае совпадения hesh1 с 7AC5.

З.Ы. Про глючность и множество ошибок Gambit уже напесал.




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 27 апреля 2007 15:47 · Поправил: Hellspawn
· Личное сообщение · #7

кракми написан на Borland Delphi [ver: 2006] | Object Pascal
дальше, я хз как у кого у меня не запускался, пришлось менять флаг вручную!

дальше, валидную пару подобрать походу не получиться (на моей машине точно)
т.к. автор использовал string[255] и вот что вышло:


тут мой код
006BF064 09 31 30 30 33 33 33 34 34 34 .100333444
...
006BF154 81 .
006BF164 03 72 65 64 00 00 00 00 00 00 00 00 00 00 00 00 .red............
а вот имя, но что за странная цифра 81 ? в алгоритме она как раз посчитается
последней и сумма будет не верна!
т.к. цикл в кракми от 0 до 255

я сначала не понял, почему посчитанные ключи в кейгене не подходят...
а потом глянул и офигел))

з.ы. может это задумка афтара конечно))) но строки то надо обнулять!

-----
[nice coder and reverser]




Ранг: 21.8 (новичок)
Активность: 0.010
Статус: Участник

Создано: 28 апреля 2007 11:48
· Личное сообщение · #8

Да понял свои ошибки.
В следующий раз буду осторожней эксперементировать.
На точке входа глупо получилось на двух машинах только проверил, кстати у кого не запустилась не могли бы вы мне сказать какая у вас ОС стоит.
И со вторым пасом чуток не подгадал из-зи этого вылетает не туда куда надо в некоторых случаях при правильных паролях.

Gambit пишет:
В четвертых, в декомпиляторе ничего полезного не отображается.


В оле убери анализатор.

Всем огромное спасибо.


 eXeL@B —› Вопросы новичков —› CrackME
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати