Контрольная работа: Методы взлома защиты программы от несанкционированного доступа

А теперь внесем в программу необратимые изменения, после которых она не сможет запуститься. Для этого нажмем F8 и посмотрим, где находится точка входа в программу (рис. 5).


Рис. 5. Информация о заголовке файла Блокнот

Как видим, точка входа находится по адресу 739d. Перейдем в нее. Для этого выйдем из режима просмотра заголовка, нажав клавишу ESC, а затем F5. Наберем «.739D». НЕ ЗАБУДЬТЕ ПРО ТОЧКУ ПЕРЕД ШЕСТНАДЦАТИРИЧНЫМ ЧИСЛОМ!!!!! Теперь на экране должно быть нечто похожее на то, что изображено на рис. 6.

Рис. 6. Точка входа Блокнота

Теперь «поиздеваемся» над Блокнотом, заменив вызов одной процедуры на пустые операции. Для этого нажмем F3, и затем последовательно заменим байты со значением 6A70 на 9090 (0х90 = nop – отсутствие какой-либо операции). После этого нажимаем F9 для того, чтобы сохранить изменения и нажимам ESC для выхода из HIEW.

Отметим, что зачастую nop'ами приходится «забивать» не один байт, а целый кусок программы; для этого удобнее отметить блок байт (клавиша «*»), а затем выполнить команду FillBlk (ALT-F2).

Рисунок 7 Измененная точка входа Блокнота

Запустим полученную версию Блокнота. Как видим, она не запускается. Таким образом, мы научились уничтожать полезный код программы путем замены нужных байтов на nop. Помните, что в данной лабораторной работе львиную долю защиты можно снять таким методом, главное знать, что и где заменять. Отсюда следует вывод: ПРИ НЕОБХОДИМОСТИ ОБЕЗВРЕДИТЬ УЧАСТОК КОДА ПУТЕМ УДАЛЕНИЯ ЕГО ФУНКЦИОНАЛЬНОСТИ ИЗ ПРОГРАММЫ, НЕОБХОДИМО ЗАМЕНИТЬ НУЖНУЮ ОПЕРАЦИЮ ЭКВИВАЛЕНТНЫМ КОЛИЧЕСТВОМ БАЙТ 0х90.

Для поиска в редакторе нужной строки достаточно нажать клавишу F7 и ввести то, что вам нужно найти либо в ASCII, либо в шестнадцатеричных кодах. Если вхождений нужной строки более чем одно, то для поиска оставшихся вхождений необходимо использовать комбинацию клавиш CTRL+F7.

За более детальным описанием команд обращаться к функции помощи данной программы F1. Информация файлов помощи контекстно-зависима.

IDA Pro v4.51

Для выполнения данной лабораторной работы нам понадобится возможность IDA показывать нам таблицу экспорта и импорта функций программы. Собственно, любая программа под Windows не является вещью в себе, а хоть как-то должна взаимодействовать с окружающей средой, в нашем случае – операционной системой. Поэтому как минимум одну функцию любая программа должна экспортировать: точку входа. Можно сказать, что в нашем случае она может послужить отправной точкой в исследовании программы. Кроме этого, большинство программ импортируют функции WinAPI, и их имена представлены в таблице импорта. В нашем случае нам понадобятся функции, ответственные за вывод информации на экран и взятие информации из элементов окна. Дабы облегчить поиск студента, ниже приводятся функции, задействованные в данной лабораторной работе:

MessageBoxA();

GetDlgItemTextA();

Из этого следует, что в работе необходимо будет искать места вызова данных функций. На этом теоретическом отступление заканчивается.

Практическое использование IDA.


Рис. 8. Основное окно IDA

При запуске IDA можно наблюдать окошко, представленное на рис. 8. Дабы почувствовать, как работает система, выберем нашу программу для анализа, и получим результат, изображенный на рис. 9.

Рис. 9. Окно запроса о методе анализа файла.

Нажимаем на ОК и получаем следующее (рис. 10).

Рис. 10 .Завершенный анализ исполняемого файла

Данное окошко получается после окончательного анализа программы. После этого выбираем вкладку Imports, чтобы посмотреть список функций, используемых программой (рис. 11).

К-во Просмотров: 199
Бесплатно скачать Контрольная работа: Методы взлома защиты программы от несанкционированного доступа