Цель: найти ключ =) Написан на делфи. Упакован FSG. http://slil.ru/23819287 Ломало пока что человек ...5 - никто не сломал http://slil.ru/23819287
Первый опыт антиотладки?? весьма насыщено!! Все эти DebugBreak, вшитые IsDebuggerPresent фитчи со стеком. Сильно вобщем!
Снял FSG за несколько секунд. Скрыл IsDebuggerPresent. Заставил ольку плевать на INT3. Крякмис ставит хук на SuspendThread? Чето олька не хочет останавливать поток )) В целом - неплохо Мне уже нравится.
4есснгря, не вижу ни4его интересного. кол-вермишель и засраный код, снимается только исходя из нали4ия у крякиръя терпения и пары 4асов свободного времени - не концептуально имхо
Итак, как я понял алго такой. Пароль читается из окошка. По таблице составляется строка. Эта строка пишется в поле пароля. Дальше опять читается пароль, который прога составила из прошлого, обрабатывает по таблице и получает ещё один новый пароль. И так n-число раз. После видимо в поле должно появиться наше имя, ибо там видно strcmp. Обратно считать алго влом. Нету времени. Может позже сделаю киген. ЗЫ: если что не так поправь [ADDED] хм, значит пасс должен быть кратен четырём. причём после каждой итерации. если хоть после одного преобразования там не кратное четырём число - в поле пишется пустота. основное условие для проверки - чтобы после всех преобразований там был текст. копаю дальше. ЗЫ: это больше напоминает брутфорс. для крякми достаточно было и штук 3 итераций, а не 10. от этого суть защиты не меняется [ADDED] Вобщем это очень сильно напоминает хэширование по таблице. Причём хэшируем результат предыдущего хэширования. Вобщем мне совсем не хочется разбираться с этим гавналго. Есть подозрение что вообще есть только одна комбинация имя-пароль. Если что неправильно понял поправь. Code: 00451932 |. 8A5411 FF |MOV DL,BYTE PTR DS:[ECX+EDX-1] 00451936 |. E8 5D28FBFF |CALL <dmp_.@System@@LStrFromChar$qqrr17System@AnsiStringc (REF 0> байт из ключа приводим к строке. Code: 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 копируем таблицу Code: 00451950 |. 58 |POP EAX ; адрес символа 00451951 |. E8 5E2CFBFF |CALL <dmp_.@System@@LStrPos$qqrv> ; ищем этот символ в таблицеъ ищем байт имени Code: 00451956 |. 85C0 |TEST EAX,EAX 00451958 |. 74 46 |JE SHORT dmp_.004519A0 есть такой символ или нет если нет то пропускаем хэширование как таковое поскипано, ибо то же что и было выше Code: 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 сдвинули. Code: 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 Опять что то с мутится со счётчкиом. Code: 004519B8 |. 8BD7 |MOV EDX,EDI 004519BA |. D3EA |SHR EDX,CL 004519BC |. 81E2 FF000000 |AND EDX,0FF вedi был хэш. значит опять чтото делаем и сохраняем младший байт. он и станет новой буквой в новом пароле. Так как число иетраций 3, значит на каждой четвёрке теряем один байт. Чтобы записалось кратное четырём нужно задать первый пасс длиной кратной шестандцати. ЗЫ: почти сплю, поэтому вероятны ошибки. ЗЫЗЫ: хз, можно ли алго обратить, возможно и можно. Но терять время реально влом.
Ra$cal,вроде все верно тока существует говноалго где мона генить неорганиченно количество ключей ) Не суди сторого,с чего и ты начинал =)
zl0Y Лучше вместо mov al,al много раз использовать один раз что то подобное Asm db $eb,$01,$a1 // так код не похож на издевательский end; Вопросик : Чтобы нормально побрутить я отключил Timer. Он вообще в проверке key участвует? Если участвует, то искать key, я пас. А так по любому +.
Посоветовался с протеусом =)) После найденого валидноко ключа не кидать меня помидорами Вечером выложу кейген
Кароч, если б это была программа которая нужна, её конечно доломать не проблема. Надо разобрать, какой элемент таблицы будет давать 0 при какой итерации хеша. И дальше смотреть что получится после десятого преобразования. Мне влом чёта кодить для крякми. Так что так. Крякми неломался не из-за сложности, это как в анеке про неуловимиого Джо ЗЫ: тут всё открыто и ясно. соглашусь с протеусом, что ничё выдающегося, то есть изюминки =) ЗЫЗЫ: злой, поломай мой перывй крякми Его никто не сломал ни здесь ни на кряклабе. по той же причине что и твой. ничё нового, делать много, а результат лишь моральное удовлетворение.
тема здесь была, ща не найду. толи стёрли то ли хз. http://ifolder.ru/1010324 - вот крякми Найди валидный ключ
чё? Если ты про колы, то это CRT, я тут не при чём. Не в ту сторону ты смотришь. Алго совсем другой. Так что дерзай