Просмотр полной версии : ZloY CrackmE $1
Цель: найти ключ =)
Написан на делфи.
Упакован FSG.
http://slil.ru/23819287
Ломало пока что человек ...5 - никто не сломал :rolleyes: :o
http://slil.ru/23819287
Первый опыт антиотладки?? весьма насыщено!!
Все эти DebugBreak, вшитые IsDebuggerPresent фитчи со стеком.
Сильно вобщем!
Снял FSG за несколько секунд. Скрыл IsDebuggerPresent.
Заставил ольку плевать на INT3.
Крякмис ставит хук на SuspendThread? Чето олька не хочет останавливать поток ))
В целом - неплохо :) Мне уже нравится.
Вот http://ifolder.ru/1003816
Как ребенок повелся на CreateProcessA =) лол
4есснгря, не вижу ни4его интересного. кол-вермишель и засраный код, снимается только исходя из нали4ия у крякиръя терпения и пары 4асов свободного времени - не концептуально имхо
Итак, как я понял алго такой. Пароль читается из окошка. По таблице составляется строка. Эта строка пишется в поле пароля. Дальше опять читается пароль, который прога составила из прошлого, обрабатывает по таблице и получает ещё один новый пароль. И так n-число раз. После видимо в поле должно появиться наше имя, ибо там видно strcmp. Обратно считать алго влом. Нету времени. Может позже сделаю киген.
ЗЫ: если что не так поправь
[ADDED]
хм, значит пасс должен быть кратен четырём. причём после каждой итерации. если хоть после одного преобразования там не кратное четырём число - в поле пишется пустота. основное условие для проверки - чтобы после всех преобразований там был текст. копаю дальше.
ЗЫ: это больше напоминает брутфорс. для крякми достаточно было и штук 3 итераций, а не 10. от этого суть защиты не меняется
[ADDED]
Вобщем это очень сильно напоминает хэширование по таблице. Причём хэшируем результат предыдущего хэширования. Вобщем мне совсем не хочется разбираться с этим гавналго. Есть подозрение что вообще есть только одна комбинация имя-пароль. Если что неправильно понял поправь.
00451932 |. 8A5411 FF |MOV DL,BYTE PTR DS:[ECX+EDX-1]
00451936 |. E8 5D28FBFF |CALL <dmp_.@System@@LStrFromChar$qqrr17System@AnsiString c (REF 0>
байт из ключа приводим к строке.
0045193E |. 50 |PUSH EAX ; |dest
0045193F |. 8D45 F4 |LEA EAX,DWORD PTR SS:[EBP-C] ; |
00451942 |. 8B15 D44D4500 |MOV EDX,DWORD PTR DS:[454DD4] ; |dmp_.004518B8
00451948 |. E8 5B28FBFF |CALL <dmp_._strcpy> ; \_strcpy
копируем таблицу
00451950 |. 58 |POP EAX ; адрес символа
00451951 |. E8 5E2CFBFF |CALL <dmp_.@System@@LStrPos$qqrv> ; ищем этот символ в таблицеъ
ищем байт имени
00451956 |. 85C0 |TEST EAX,EAX
00451958 |. 74 46 |JE SHORT dmp_.004519A0
есть такой символ или нет
если нет то пропускаем хэширование как таковое
поскипано, ибо то же что и было выше
00451988 |. 48 |DEC EAX
00451989 |. 0FB7C0 |MOVZX EAX,AX
0045198C |. 33D2 |XOR EDX,EDX
0045198E |. 8AD3 |MOV DL,BL
00451990 |. B9 04000000 |MOV ECX,4
00451995 |. 2BCA |SUB ECX,EDX
00451997 |. 03C9 |ADD ECX,ECX
00451999 |. 8D0C49 |LEA ECX,DWORD PTR DS:[ECX+ECX*2]
0045199C |. D3E0 |SHL EAX,CL
0045199E |. 03F8 |ADD EDI,EAX
004519A0 |> 43 |INC EBX
004519A1 |. 80FB 05 |CMP BL,5
вот собсно хэшь. в eax положение байта в таблице. в edx счётчик цикла. вычитаем. получаем 3, 2, 1, 0. Умножаем ecx на 2. потом ещё на 2. и складываем. eax сдвинем на это число. число как можно понять зависит только от edx, то есть от счётчика цикла. eax сдвинули.
004519AA |. 8AC3 |MOV AL,BL
004519AC |. BA 03000000 |MOV EDX,3
004519B1 |. 2BD0 |SUB EDX,EAX
004519B3 |. 8BCA |MOV ECX,EDX
004519B5 |. C1E1 03 |SHL ECX,3
Опять что то с мутится со счётчкиом.
004519B8 |. 8BD7 |MOV EDX,EDI
004519BA |. D3EA |SHR EDX,CL
004519BC |. 81E2 FF000000 |AND EDX,0FF
вedi был хэш. значит опять чтото делаем и сохраняем младший байт. он и станет новой буквой в новом пароле.
Так как число иетраций 3, значит на каждой четвёрке теряем один байт. Чтобы записалось кратное четырём нужно задать первый пасс длиной кратной шестандцати.
ЗЫ: почти сплю, поэтому вероятны ошибки.
ЗЫЗЫ: хз, можно ли алго обратить, возможно и можно. Но терять время реально влом.
Ra$cal,вроде все верно тока существует говноалго где мона генить неорганиченно количество ключей )
ProTeuS
Не суди сторого,с чего и ты начинал =) :rolleyes:
zl0Y
Лучше вместо mov al,al много раз
использовать один раз что то подобное
Asm
db $eb,$01,$a1 // так код не похож на издевательский
end;
Вопросик :
Чтобы нормально побрутить я отключил Timer.
Он вообще в проверке key участвует?
Если участвует, то искать key, я пас.
А так по любому +.
Xserg,да участвует это часть задумки =)
Ну отпишитесь кто нить нашел кто то ключ верный или нет =) ?
Посоветовался с протеусом =)) После найденого валидноко ключа не кидать меня помидорами :) :(
Вечером выложу кейген ;) :D
гм, ждём кому не жалко времени своего =)
Меня заломало смотреть :)
Кароч, если б это была программа которая нужна, её конечно доломать не проблема. Надо разобрать, какой элемент таблицы будет давать 0 при какой итерации хеша. И дальше смотреть что получится после десятого преобразования. Мне влом чёта кодить для крякми. Так что так. Крякми неломался не из-за сложности, это как в анеке про неуловимиого Джо ;)
ЗЫ: тут всё открыто и ясно. соглашусь с протеусом, что ничё выдающегося, то есть изюминки =)
ЗЫЗЫ: злой, поломай мой перывй крякми ;) Его никто не сломал ни здесь ни на кряклабе. по той же причине что и твой. ничё нового, делать много, а результат лишь моральное удовлетворение.
тема здесь была, ща не найду. толи стёрли то ли хз.
http://ifolder.ru/1010324 - вот крякми
Найди валидный ключ ;)
Все как ты сказал =) http://img501.imageshack.us/img501/7813/1212dd0.jpg :o
чё? Если ты про колы, то это CRT, я тут не при чём. Не в ту сторону ты смотришь. Алго совсем другой. Так что дерзай ;)
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot