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

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

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

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

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

Лабораторная работа №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

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

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

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

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.