Тема: ZloY CrackmE $1
Показать сообщение отдельно

  #8  
Старый 31.01.2007, 01:41
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

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

Последний раз редактировалось Ra$cal; 31.01.2007 в 03:34..
 
Ответить с цитированием