Санкт-Петербургский государственный университет
информационных технологий механики и оптики
по курсу «Безопасность вычислительных систем»
Выполнил:
Группа: 5103
Проверил:
2008г.
1. Задание
Используя IDA найти проверку условия в коде программы.
Изменить исполнительный код таким образом, чтобы программа работала без анализ
условия выхода.
Дополнительное задание:
Создать условия для работы программы без модификации исполняемого кода.
2. Поиск условия проверки выхода
1) Запуск IDA. Выбор файла lab2.exe для дизассемблирования.
2) Просматриваем список функций в поисках функции завершения программы.
3) Не найдя функций, названия которых содержали бы намёк на завершение этой функцией данной программы, анализируем названия остальных функций.
4) Трассируя прогрaмму, доходим до процедуры, которая, вероятно и создаёт окно программы.
5) Трассируя далее, доходим до адреса 0040145A, сразу замечаем, что после неё идёт команда сравнения содержимого регистра EAX - test eax, eax. Эта команда устанавливает флаг ZF при условии, что EAX = 0, видим, что в EAX записан ноль и при дальнейшей трассировке программа завершается, пробуем поменять значение в EAX на ненулевое, в результате программа работает. Таким образом надо просто поменять условие перехода.
.text:00401251 jz short loc_401257
на
.text:00401251 jmp short loc_401257
Получаем работающую программу.
.text:0040140E call ?ShowWindow@CWnd@@QAEHH@Z ; CWnd::ShowWindow(int)
.text:00401413 mov ecx, [ebp+var_10]
.text:00401416 call sub_401640
.text:0040141B mov al, byte_40515C
.text:00401420 mov [ebp+String1], al
.text:00401426 mov ecx, 40h
.text:0040142B xor eax, eax
.text:0040142D lea edi, [ebp-13Bh]
.text:0040124F test eax, eax
.text:00401251 jmp short loc_401257
.text:00401253 xor eax, eax
.text:00401255 jmp short loc_40125C
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.