Помогите разобраться с алгоритмом расшифровки.

Тема в разделе "WASM.RESEARCH", создана пользователем SergX, 11 июл 2007.

  1. SergX

    SergX New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    19
    Люди, ОЧЕНЬ ПРОШУ, помогите разобраться с алгоритмом расшифровки.

    Код (Text):
    1. 004D06D4  |. 8945 F0        MOV DWORD PTR SS:[EBP-10],EAX                     ;  COUNTER:=3
    2. 004D06D7 >|> 8D8D ECFEFFFF  /LEA ECX,DWORD PTR SS:[EBP-114]
    3. 004D06DD     8B55 08        MOV EDX,DWORD PTR SS:[EBP+8]
    4. 004D06E0  |. 8B45 08        |MOV EAX,DWORD PTR SS:[EBP+8]
    5. 004D06E3  |. E8 60FAFFFF    |CALL <Ccalc.PROC1>                               ;  PROC1 (TMP_str, OUT_str, OUT_srt)
    6. 004D06E8  |. 8B45 08        |MOV EAX,DWORD PTR SS:[EBP+8]
    7. 004D06EB  |. 8DB5 ECFEFFFF  |LEA ESI,DWORD PTR SS:[EBP-114]
    8. 004D06F1  |. 8BF8           |MOV EDI,EAX
    9. 004D06F3  |. B9 41000000    |MOV ECX,41
    10. 004D06F8  |. F3:A5          |REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]   ;  COPY from TMP_str to OUT_str
    11. 004D06FA  |. 8B55 F4        |MOV EDX,DWORD PTR SS:[EBP-C]
    12. 004D06FD  |. 8B45 08        |MOV EAX,DWORD PTR SS:[EBP+8]
    13. 004D0700  |. E8 FBFDFFFF    |CALL <Ccalc.PROC2>                               ;  PROC2 (MASK_?, OUT_str)
    14. 004D0705  |. 8B55 F8        |MOV EDX,DWORD PTR SS:[EBP-8]
    15. 004D0708  |. 8B45 F0        |MOV EAX,DWORD PTR SS:[EBP-10]
    16. 004D070B  |. E8 78F8FFFF    |CALL <Ccalc.PROC3>
    17. 004D0710  |. 3C 01          |CMP AL,1
    18. 004D0712     75 2E          JNZ SHORT <Ccalc.SKIP>                            ;  if PROC3(0D_?, COUNTER)==1 {
    19. 004D0714  |. 8D8D ECFEFFFF  |LEA ECX,DWORD PTR SS:[EBP-114]
    20. 004D071A  |. 8B55 FC        |MOV EDX,DWORD PTR SS:[EBP-4]
    21. 004D071D  |. 8B45 08        |MOV EAX,DWORD PTR SS:[EBP+8]
    22. 004D0720  |. E8 23FAFFFF    |CALL <Ccalc.PROC1>                               ;  PROC1 (TMP_str, IN_str, OUT_str)
    23. 004D0725  |. 8B45 08        |MOV EAX,DWORD PTR SS:[EBP+8]
    24. 004D0728  |. 8DB5 ECFEFFFF  |LEA ESI,DWORD PTR SS:[EBP-114]
    25. 004D072E  |. 8BF8           |MOV EDI,EAX
    26. 004D0730  |. B9 41000000    |MOV ECX,41
    27. 004D0735  |. F3:A5          |REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]   ;  COPY from TMP_str to OUT_str
    28. 004D0737  |. 8B55 F4        |MOV EDX,DWORD PTR SS:[EBP-C]
    29. 004D073A  |. 8B45 08        |MOV EAX,DWORD PTR SS:[EBP+8]
    30. 004D073D  |. E8 BEFDFFFF    |CALL <Ccalc.PROC2>                               ;  PROC2 (MASK_?, OUT_str) }
    31. 004D0742 >|> FF4D F0        |DEC DWORD PTR SS:[EBP-10]
    32. 004D0745  |. 837D F0 FF     |CMP DWORD PTR SS:[EBP-10],-1
    33. 004D0749  |.^75 8C          \JNZ SHORT <Ccalc.WHILE>                          ;  if (COUNTER-->=0) loop
    [00CF8550] IN_str – зашифрованная строка.
    [0012F6B4] TMP_str – промежуточная строка.
    [0012F7D6] OUT_str – после этого цикла тут расшифрованная строка.
    [00CACA98] MASK_? – unknown
    [00CAC994] 0D_? - unknown

    Пришёл к выводу что самому не разобраться, не хватает опыта. Мозги пухнут :dntknw:, уже три дня это шагаю…
    Подскажите в каком направлении копать. Может кто опознает в этом какой-то из стандартных алгоритмов.
    Буду благодарен за любую подсказку. Открывал тему на краклабе, но там пока никто не помог...

    Вот не запакованная прога. 1.4 Mb
    http://rapidshare.com/files/42092523/Ccalc_6.98.56_Dealer.zip.html

    Выше приведённая процедура в TXT файле. 2 Kb
    http://rapidshare.com/files/42093299/proc.txt.html
     
  2. SergX

    SergX New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    19
    Неужели никто не поможет разобраться в алгоритме ?
     
  3. OLS

    OLS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2005
    Сообщения:
    322
    Адрес:
    Russia
    Ну лично я алгоритма шифрования собственно не увидел.
    Что помогать расшифровать то ?
    Содержимое CALL-ов я не умею пока предугадывать :-(
     
  4. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Дык программу ж он вроде бы выложил. Адреса, где искать, приложены в листинге.
     
  5. SergX

    SergX New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    19
    На входе зашифрованная строка IN_str, которая читается из ини файла (96 байт).
    На выходе строка OUT_str. В ней название фирмы, телефон и HardwareID.

    Прога написана на делфи и ничем не запакована.

    Задача разобраться как расшивровываеться IN_str.

    ПОМОГИТЕ !
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Может, в commercials? Или cracklab.
     
  7. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    SergX
    А алгоритм тебе зачем? Грузи в дебуггер и смотри, что получается.
    IceStudent
    Ему на кряклабе еще не помогли (#1)
     
  8. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    подозреваю, что для кейгена
     
  9. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    MSoft
    Я тоже это подозреваю...
     
  10. SergX

    SergX New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    19
    Что получается я знаю. Как бы я без отладчика вообще эту процедуру нашёл...

    Подозревать не надо. Нужно мне это именно для написания кейгена.
    На кряклабе все смотрят, но помочь не хотят или не могут...

    Я не прошу готового решения, мне нужны хотя бы подсказки.
    И не так важен результат как процесс.
     
  11. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Хех, подозреваю, что он ключ для расшифровки вычисляет из имени компьютера. Иначе нафига там мелькает местами имя компа и реализовано в коде CRC32, Adler32, MD4 и MD5. Да уж, тут имхо долго париться надо. Вряд ли кто за "так" возьмется.
     
  12. SergX

    SergX New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    19
    Нет ключ фиксированный !
    Он лежит в самом ехе.

    [00CACA98] MASK_? – это вроде ключ.

    После выполнения выше приведённой процедуры на любом компе в OUT_str будет одинаковый результат независимо от того зарегеная прога или нет.
    Прога начинает думать подходит ей ключ или нет уже после расшифровки !
     
  13. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    crypto
    Это я видел, просто такие крики надоедают.
     
  14. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    SergX
    Похоже там оригинальный алгоритм автора. Используются битовые поля (ассемблерные процедуры с адресами, близкими к 4D0000 и выше). Ассемблерные, ИМХО, поскольку в них используются инструкции bt, bts, br, которые Builder (а программа написана на Builder 5) практически не использует при компиляции.
    Мой тебе совет: бери IDA, загружай в нее свою программу и пытайся реверсить алгоритм, написанный на С. Еще тебе может помочь DeDe (в плане определения системных процедур). Выдели сразу процедуры работы с битовыми полями (они стандартные - инициализировать битовое поле, установить бит с данным индексом, очистить бит с данным индексом, проверить бит с данным индексом). Остальной алгоритм будет как-бы постепенно нанизываться на эти процедуры "нижнего уровня".