Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Реверсинг (https://forum.antichat.xyz/forumdisplay.php?f=94)
-   -   ZloY CrackmE $1 (https://forum.antichat.xyz/showthread.php?t=32387)

zl0y 30.01.2007 18:18

ZloY CrackmE $1
 
Цель: найти ключ =)
Написан на делфи.
Упакован FSG.
http://slil.ru/23819287
Ломало пока что человек ...5 - никто не сломал :rolleyes: :o

http://slil.ru/23819287

taha 30.01.2007 18:26

Первый опыт антиотладки?? весьма насыщено!!
Все эти DebugBreak, вшитые IsDebuggerPresent фитчи со стеком.
Сильно вобщем!

_Great_ 30.01.2007 18:36

Снял FSG за несколько секунд. Скрыл IsDebuggerPresent.
Заставил ольку плевать на INT3.
Крякмис ставит хук на SuspendThread? Чето олька не хочет останавливать поток ))

В целом - неплохо :) Мне уже нравится.

Dude03 30.01.2007 18:41

Перезалейте, пожалуйста

zl0y 30.01.2007 18:43

Вот http://ifolder.ru/1003816

_Great_ 30.01.2007 19:23

Как ребенок повелся на CreateProcessA =) лол

ProTeuS 30.01.2007 22:25

4есснгря, не вижу ни4его интересного. кол-вермишель и засраный код, снимается только исходя из нали4ия у крякиръя терпения и пары 4асов свободного времени - не концептуально имхо

Ra$cal 31.01.2007 01:41

Итак, как я понял алго такой. Пароль читается из окошка. По таблице составляется строка. Эта строка пишется в поле пароля. Дальше опять читается пароль, который прога составила из прошлого, обрабатывает по таблице и получает ещё один новый пароль. И так 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@AnsiStringc (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, значит на каждой четвёрке теряем один байт. Чтобы записалось кратное четырём нужно задать первый пасс длиной кратной шестандцати.
ЗЫ: почти сплю, поэтому вероятны ошибки.
ЗЫЗЫ: хз, можно ли алго обратить, возможно и можно. Но терять время реально влом.

zl0y 31.01.2007 05:38

Ra$cal,вроде все верно тока существует говноалго где мона генить неорганиченно количество ключей )

Цитата:

ProTeuS
Не суди сторого,с чего и ты начинал =) :rolleyes:

Xserg 31.01.2007 10:39

zl0Y
Лучше вместо mov al,al много раз
использовать один раз что то подобное
Asm
db $eb,$01,$a1 // так код не похож на издевательский
end;

Вопросик :
Чтобы нормально побрутить я отключил Timer.
Он вообще в проверке key участвует?
Если участвует, то искать key, я пас.

А так по любому +.


Время: 04:15