Подскажите что делает указанный код.

Тема в разделе "WASM.BEGINNERS", создана пользователем Barmaley, 9 авг 2009.

  1. Barmaley

    Barmaley New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2009
    Сообщения:
    4
    Доброго дня.
    Пару недель назад начал учиться крэкингу. Прочитал вводную по OllyDbg и CRACKME.
    Решил попробывать на одной из программ написанной на Delphi. Программа при старте показывает заставку и затем выводит на экран форму регистрации в которой показывает в Label3 код и предлагает в Edit1 ввести ответный код, при неправильном вводе программа сразу закрывается. Приведёный ниже код это после обработки EXE через DeDe.
    Код (Text):
    1. procedure TForm1.BitBtn1Click(Sender : TObject);
    2. begin
    3. (*
    4. 0051422C   55                     push    ebp
    5. 0051422D   8BEC                   mov     ebp, esp
    6. 0051422F   6A00                   push    $00
    7. 00514231   53                     push    ebx
    8. 00514232   8BD8                   mov     ebx, eax
    9. 00514234   33C0                   xor     eax, eax
    10. 00514236   55                     push    ebp
    11. 00514237   6873425100             push    $00514273
    12.  
    13. ***** TRY
    14. |
    15. 0051423C   64FF30                 push    dword ptr fs:[eax]
    16. 0051423F   648920                 mov     fs:[eax], esp
    17. 00514242   8D55FC                 lea     edx, [ebp-$04]
    18.  
    19. * Reference to control TForm1.Edit1 : TEdit
    20. |
    21. 00514245   8B8370030000           mov     eax, [ebx+$0370]
    22.  
    23. |
    24. 0051424B   E81CD1F4FF             call    0046136C
    25. 00514250   8B55FC                 mov     edx, [ebp-$04]
    26.  
    27. * Reference to pointer to GlobalVar_005A7F60
    28. |
    29. 00514253   A1F81F5A00             mov     eax, dword ptr [$005A1FF8]
    30.  
    31. |
    32. 00514258   E8630AEFFF             call    00404CC0
    33. 0051425D   33C0                   xor     eax, eax
    34. 0051425F   5A                     pop     edx
    35. 00514260   59                     pop     ecx
    36. 00514261   59                     pop     ecx
    37. 00514262   648910                 mov     fs:[eax], edx
    38.  
    39. ****** FINALLY
    40. |
    41. 00514265   687A425100             push    $0051427A
    42. 0051426A   8D45FC                 lea     eax, [ebp-$04]
    43.  
    44. |
    45. 0051426D   E8FA09EFFF             call    00404C6C
    46. 00514272   C3                     ret
    47.  
    48.  
    49. |
    50. 00514273   E97C02EFFF             jmp     004044F4
    51. 00514278   EBF0                   jmp     0051426A
    52.  
    53. ****** END
    54. |
    55. 0051427A   5B                     pop     ebx
    56. 0051427B   59                     pop     ecx
    57. 0051427C   5D                     pop     ebp
    58. 0051427D   C3                     ret
    59.  
    60. *)
    61. end;
     
  2. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    0046136C
    00404CC0
    00404C6C
    это что за функции
    а пока
    begin
    try
    Edit1.0046136C;
    Edit1.00404CC0;
    finally
    Edit1.00404C6C;
    end;
    end;
     
  3. Barmaley

    Barmaley New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2009
    Сообщения:
    4
    В коде вложенных функций много. Я с ними засел.
    Код (Text):
    1. 0046136C
    2.  
    3. 0046136C  /$ 53             PUSH EBX
    4. 0046136D  |. 56             PUSH ESI
    5. 0046136E  |. 57             PUSH EDI
    6. 0046136F  |. 8BFA           MOV EDI,EDX
    7. 00461371  |. 8BF0           MOV ESI,EAX
    8. 00461373  |. 8BC6           MOV EAX,ESI
    9. 00461375  |. E8 62FFFFFF    CALL FrontOff.004612DC
    10. 0046137A  |. 8BD8           MOV EBX,EAX
    11. 0046137C  |. 8BC7           MOV EAX,EDI
    12. 0046137E  |. 8BCB           MOV ECX,EBX
    13. 00461380  |. 33D2           XOR EDX,EDX
    14. 00461382  |. E8 D539FAFF    CALL FrontOff.00404D5C
    15. 00461387  |. 85DB           TEST EBX,EBX
    16. 00461389  |. 74 0C          JE SHORT FrontOff.00461397
    17. 0046138B  |. 8D4B 01        LEA ECX,DWORD PTR DS:[EBX+1]
    18. 0046138E  |. 8B17           MOV EDX,DWORD PTR DS:[EDI]
    19. 00461390  |. 8BC6           MOV EAX,ESI
    20. 00461392  |. E8 55FFFFFF    CALL FrontOff.004612EC
    21. 00461397  |> 5F             POP EDI
    22. 00461398  |. 5E             POP ESI
    23. 00461399  |. 5B             POP EBX
    24. 0046139A  \. C3             RETN
    25.  
    26. 00404CC0   $ 85D2           TEST EDX,EDX
    27. 00404CC2   . 74 24          JE SHORT FrontOff.00404CE8
    28. 00404CC4   . 8B4A F8        MOV ECX,DWORD PTR DS:[EDX-8]
    29. 00404CC7   . 41             INC ECX
    30. 00404CC8   . 7F 1A          JG SHORT FrontOff.00404CE4
    31. 00404CCA   . 50             PUSH EAX
    32. 00404CCB   . 52             PUSH EDX
    33. 00404CCC   . 8B42 FC        MOV EAX,DWORD PTR DS:[EDX-4]
    34. 00404CCF   . E8 5C000000    CALL FrontOff.00404D30
    35. 00404CD4   . 89C2           MOV EDX,EAX
    36. 00404CD6   . 58             POP EAX
    37. 00404CD7   . 52             PUSH EDX
    38. 00404CD8   . 8B48 FC        MOV ECX,DWORD PTR DS:[EAX-4]
    39. 00404CDB   . E8 14E5FFFF    CALL FrontOff.004031F4
    40. 00404CE0   . 5A             POP EDX
    41. 00404CE1   . 58             POP EAX
    42. 00404CE2   . EB 04          JMP SHORT FrontOff.00404CE8
    43. 00404CE4   > F0:FF42 F8     LOCK INC DWORD PTR DS:[EDX-8]            ;  LOCK prefix
    44. 00404CE8   > 8710           XCHG DWORD PTR DS:[EAX],EDX
    45. 00404CEA   . 85D2           TEST EDX,EDX
    46. 00404CEC   . 74 14          JE SHORT FrontOff.00404D02
    47. 00404CEE   . 8B4A F8        MOV ECX,DWORD PTR DS:[EDX-8]
    48. 00404CF1   . 49             DEC ECX
    49. 00404CF2   . 7C 0E          JL SHORT FrontOff.00404D02
    50. 00404CF4   . F0:FF4A F8     LOCK DEC DWORD PTR DS:[EDX-8]            ;  LOCK prefix
    51. 00404CF8   . 75 08          JNZ SHORT FrontOff.00404D02
    52. 00404CFA   . 8D42 F8        LEA EAX,DWORD PTR DS:[EDX-8]
    53. 00404CFD   . E8 A6E2FFFF    CALL FrontOff.00402FA8
    54. 00404D02   > C3             RETN
    55. 00404D03     90             NOP
    56. 00404D04   $ 85D2           TEST EDX,EDX
    57. 00404D06   . 74 0A          JE SHORT FrontOff.00404D12
    58. 00404D08   . 8B4A F8        MOV ECX,DWORD PTR DS:[EDX-8]
    59. 00404D0B   . 41             INC ECX
    60. 00404D0C   . 7E 04          JLE SHORT FrontOff.00404D12
    61. 00404D0E   . F0:FF42 F8     LOCK INC DWORD PTR DS:[EDX-8]            ;  LOCK prefix
    62. 00404D12   > 8710           XCHG DWORD PTR DS:[EAX],EDX
    63. 00404D14   . 85D2           TEST EDX,EDX
    64. 00404D16   . 74 14          JE SHORT FrontOff.00404D2C
    65. 00404D18   . 8B4A F8        MOV ECX,DWORD PTR DS:[EDX-8]
    66. 00404D1B   . 49             DEC ECX
    67. 00404D1C   . 7C 0E          JL SHORT FrontOff.00404D2C
    68. 00404D1E   . F0:FF4A F8     LOCK DEC DWORD PTR DS:[EDX-8]            ;  LOCK prefix
    69. 00404D22   . 75 08          JNZ SHORT FrontOff.00404D2C
    70. 00404D24   . 8D42 F8        LEA EAX,DWORD PTR DS:[EDX-8]
    71. 00404D27   . E8 7CE2FFFF    CALL FrontOff.00402FA8
    72. 00404D2C   > C3             RETN
    73.  
    74. 00404C6C   $ 8B10           MOV EDX,DWORD PTR DS:[EAX]
    75. 00404C6E   . 85D2           TEST EDX,EDX
    76. 00404C70   . 74 1C          JE SHORT FrontOff.00404C8E
    77. 00404C72   . C700 00000000  MOV DWORD PTR DS:[EAX],0
    78. 00404C78   . 8B4A F8        MOV ECX,DWORD PTR DS:[EDX-8]
    79. 00404C7B   . 49             DEC ECX
    80. 00404C7C   . 7C 10          JL SHORT FrontOff.00404C8E
    81. 00404C7E   . F0:FF4A F8     LOCK DEC DWORD PTR DS:[EDX-8]            ;  LOCK prefix
    82. 00404C82   . 75 0A          JNZ SHORT FrontOff.00404C8E
    83. 00404C84   . 50             PUSH EAX
    84. 00404C85   . 8D42 F8        LEA EAX,DWORD PTR DS:[EDX-8]
    85. 00404C88   . E8 1BE3FFFF    CALL FrontOff.00402FA8
    86. 00404C8D   . 58             POP EAX
    87. 00404C8E   > C3             RETN
     
  4. Shooshpanchik

    Shooshpanchik Member

    Публикаций:
    0
    Регистрация:
    29 сен 2006
    Сообщения:
    117
    FrontOff.00404D5C({EAX,} FrontOff.004612DC(), 0); при чем в EAX в предыдущей функции загоняется [ebp-$04]
    if (EBX<>0) FrontOff.004612EC({ESI}, DWORD PTR DS:[EBX+1], DWORD PTR DS:[EDI]);

    Ну и т.д. мож посмотришь под дебагером что там происходит ? Или под Идой.
     
  5. Barmaley

    Barmaley New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2009
    Сообщения:
    4
    Разглядываю что там происходит через OllyDbg. При старте прога проверяет откуда она запущена и затем идут непонятные манипуляции с инфой о разделе или hdd. И генерируется непонятно как номер, который и показывается на экране. По идее на ответный код пофиг, было бы достаточно просто обойти эти проверки и запустить прогу. Патча достаточно будет. :) Сегодня как раз две недели как пробую сделать - чувствую себя тупицей.
     
  6. Shooshpanchik

    Shooshpanchik Member

    Публикаций:
    0
    Регистрация:
    29 сен 2006
    Сообщения:
    117
    Видишь вот эту инструкцию
    00461389 |. 74 0C JE SHORT FrontOff.00461397

    В ней достаточно 1 байт пропатчить чтоб стало
    JNE SHORT FrontOff.00461397

    Для Олли есть плагин чтоб записать лог переходов, пропускаешь два раза, один раз вводишь правильный ответ, второй раз неправильный, смотришь где прога пошла по другому пути...
     
  7. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    IDA множество внутренних функций Языков Высокого Уровня распазнает
     
  8. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    JCronuz
    но вот с классами она до сих пор не дружит (вер. 5.2)
     
  9. Shooshpanchik

    Shooshpanchik Member

    Публикаций:
    0
    Регистрация:
    29 сен 2006
    Сообщения:
    117
    Достаточно найти CreateForm, а перед ним и будет в регистрах и TForm и Form1, при чем с именами как в сырце. Если погулять по этим указателям можно восстановить и классы, и их имена в сырце а даже файлы в которых они были, когда были сырцами.

    Исследование кода, генерируемого Delphi. Часть 1
    Мож кто поумнее плагин для этого замутит ? А то всяких там DeDe/SourceRescuer/De_Decompiller'ов полно ходит.
     
  10. Z3N

    Z3N New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2009
    Сообщения:
    812
    Shooshpanchik
    Для Олли есть плагин чтоб записать лог переходов, пропускаешь два раза, один раз вводишь правильный ответ, второй раз неправильный, смотришь где прога пошла по другому пути...
    Можешь сказать что это за плагин?
     
  11. InsidE

    InsidE Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    357
    Адрес:
    Over the hills and far away...
    Z3N
    Conditional Branch Logger
     
  12. Barmaley

    Barmaley New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2009
    Сообщения:
    4
    Всем спасибо. буду дальше ковырять. Тут похоже всё интереснее, что-то местами попадается шифрование. Т.е. снимается инфа о железе и шифруется. И похоже на основе этого генерируется код.