Есть 3 файла: Testavt.exe - программа для тестов. VOPROSI.TXT, OTVETI.TXT - зашифрованные файлы с вопросами и ответами соответственно. Помогите расшифровать файлы с ответами и вопросами. PEiD показал, что Testavt.exe ничем не упакован, и скомпилен в "Borland C++ 1999". Так программа запускается без проблем, но когда открываю в OllyDbg и пытаюсь запустить, то получаю "Неудается открыть исполняемый файл!" Как быть? Я так понимаю, что после того, как тест запущен - вопросы и ответы расшифрованы и есть где-то в памяти... можно ли их как-то стянуть из памяти? Все файлы - https://www.dropbox.com/s/e5c6nmhxwoxbr8p/tests.zip
Так, а в чем проблема была открыть его в отладчике ? Антиотладки я там не вижу, а сообщение это - обычный 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 Выполняем ручной трейс.Вылезло это сообщение с ошибкой. Нажимаем ОК и трассируем далее и в итоге оказываемся тут: 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 и мы в программе (= Дальше сами.