Помогите разобраться с программой-тестом

Discussion in 'Реверсинг' started by romkoll, 9 Jun 2012.

  1. romkoll

    romkoll New Member

    Joined:
    26 Sep 2010
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Есть 3 файла:
    Testavt.exe - программа для тестов.
    VOPROSI.TXT, OTVETI.TXT - зашифрованные файлы с вопросами и ответами соответственно.

    Помогите расшифровать файлы с ответами и вопросами.

    PEiD показал, что Testavt.exe ничем не упакован, и скомпилен в "Borland C++ 1999".
    Так программа запускается без проблем, но когда открываю в OllyDbg и пытаюсь запустить, то получаю "Неудается открыть исполняемый файл!" Как быть?

    Я так понимаю, что после того, как тест запущен - вопросы и ответы расшифрованы и есть где-то в памяти... можно ли их как-то стянуть из памяти?

    Все файлы - https://www.dropbox.com/s/e5c6nmhxwoxbr8p/tests.zip
     
  2. t3cHn0iD

    t3cHn0iD Banned

    Joined:
    6 Apr 2009
    Messages:
    313
    Likes Received:
    63
    Reputations:
    66
    Так, а в чем проблема была открыть его в отладчике ? Антиотладки я там не вижу, а сообщение это - обычный MessageBox.Усе.

    1.Ставим бряки на MessageBoxA, а так же по адресу 00403DFC.
    2.Запускаем прогу.Брякнулись.
    Чуть ниже видим команду и переход.Первая сравнивает регистр EBP с единицей, а переход выполняется на команду по адресу 00403E34.
    Code:
    00403E26     837D F8 01     CMP DWORD PTR SS:[EBP-8],1
    00403E2A     75 08          JNZ SHORT testavt.00403E34
    --------
    00403E34  |> 59             POP ECX
    Выполняем ручной трейс.Вылезло это сообщение с ошибкой.
    [​IMG]
    Нажимаем ОК и трассируем далее и в итоге оказываемся тут:
    Code:
    77807094 > C3               RETN
    77807095   8DA424 00000000  LEA ESP,DWORD PTR SS:[ESP]
    7780709C   8D6424 00        LEA ESP,DWORD PTR SS:[ESP]
    778070A0 > 8D5424 08        LEA EDX,DWORD PTR SS:[ESP+8]
    778070A4   CD 2E            INT 2E
    В стеке видим:
    Code:
    0012FC1C   7781E137  RETURN to ntdll.7781E137 from ntdll.ZwTerminateProcess
    Функция прерывания процесса.
    Отсюда можно сделать однозначный вывод, что нужно сделать так, чтобы переход не выполнялся и процесс не прерывался.
    Для начала убьем сообщение об ошибке, чтобы не мозолило глаза:
    Code:
    00403E11     68 EC614800    PUSH testavt.004861EC                    ; |Title = "Програма TESTAVTW"
    
    на
    
    [COLOR=Red]
    00403E11     90             NOP                                      ; |Title
    00403E12     90             NOP
    00403E13     90             NOP
    00403E14     90             NOP
    00403E15     90             NOP[/COLOR]
    Заменим переход на противоположный (равнозначно в гексе поменять 75 на 74):
    Code:
    00403E2A     75 08          JNZ SHORT testavt.00403E34
    
    на
    
    [COLOR=Red]00403E2A     74 08          JE SHORT testavt.00403E34[/COLOR]
    Жмем F9.

    3.После первых патчей вылезает Access Violation (нарушение доступа тобишь) и мы оказываемся тут:
    Code:
    00433FA6  |. E8 75010500    CALL <JMP.&USER32.MessageBoxA>           ; \MessageBoxA
    00433FAB  |. 8945 F8        MOV DWORD PTR SS:[EBP-8],EAX
    00433FAE  |. 33C0           XOR EAX,EAX
    00433FB0  |. 5A             POP EDX
    00433FB1  |. 59             POP ECX
    00433FB2  |. 59             POP ECX
    00433FB3  |. 64:8910        MOV DWORD PTR FS:[EAX],EDX
    00433FB6  |. 68 14404300    PUSH testavt.00434014
    00433FBB  |> 8B45 EC        MOV EAX,DWORD PTR SS:[EBP-14]
    00433FBE  |. 3B45 E8        CMP EAX,DWORD PTR SS:[EBP-18]
    00433FC1     74 38          JE SHORT testavt.00433FFB
    Сделаем так, чтобы здесь ничего не выполнялось, то есть нопим адрес 00433FA6 (ПКМ по адресу -> Binary - Fill with NOPs) :
    Code:
    [COLOR=Red]00433FA6     90             NOP                                      ; \MessageBoxA
    00433FA7     90             NOP
    00433FA8     90             NOP
    00433FA9     90             NOP
    00433FAA     90             NOP[/COLOR]
    Снова нажимаем F9 и мы в программе (=
    [​IMG]


    Дальше сами.
     
    #2 t3cHn0iD, 13 Jun 2012
    Last edited: 14 Jun 2012
    1 person likes this.