Создание условий для работы программы без модификации исполняемого кода

Страницы работы

2 страницы (Word-файл)

Содержание работы

Безопасность ВС

Лабораторная работа №1

Выполнили: , ,

Гр. 5103

Преподаватель:

Задание: Используя W32DSM89 найти проверку условия в коде программы. Изменить исполняемый код таким образом, чтобы программа работала без анализа условия выхода.

Доп.задание: Создать условия для работы программы без модификации исполняемого кода.

Проверка условия в программе осуществляется в следующем фрагменте:

Таким образом, если не срабатывает условный переход, выполняется функция выхода (KERNEL32.ExitProcess), вызов которой расположен по адресу :004013ED. Для того, чтобы анализ условия не проводился, необходимо по адресу :004013E9 заменить команду условного перехода JNE (75 08) заменить на команду безусловного перехода JMP (EB 08). После данного изменения, при запуске программы функция выхода стала в любом случае “перескакиваться”.

Доп.задание:

Так как по условию задания программа должна корректно работать и без модификации исполняемого кода, значит можно создать внешние условия для её работы. Например, программа может проверять существование какого-нибудь файла или читать какой-нибудь ключ из реестра Windows. В любом случае, имя файла/ключа должно быть заранее определено, а значит мы можем найти его в таблице строк при дизассемблировании. Заглянув в эту таблицу, находим в ней подтверждение нашей догадки. Это путь к ключу в реестре:

“Software\Microsoft\Explorer\Parameters”

И имя ключа:

“Value”

Чтобы не осталось никаких сомнений, запустим утилиту regmon, которая отслеживает все обращения к реестру Windows. Проанализировав лог обращений при запуске программы, мы видим, что программа действительно обращается к данному ключу, но попытка его чтения заканчивается неудачей. Этого ключа не существует. Создадим его сами. Для этого напишем *.REG файл со следующим содержимым:

[HKEY_CURRENT_USER\Software\Microsoft\Explorer\Parameters]

"Value"=dword:00000001

Значение данного ключа должно быть ненулевым, как видно из проверки перед условным переходом, который отвечает за ”перепрыгивание” вызова функции выхода.    

Похожие материалы

Информация о работе