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

Щелкнув двойным щелчком на функции GetSystemTimeAsFileTime, мы увидим картину, изображенную на рис. 12.

Рис. 12. Информация об импортированной функции GetSystemTimeAsFileTime

Как можно видеть из рис. 12, после совершенной операции перед нами предстало описание импортируемой функции с ее параметрами и местом вызова в программе (; DATA XREF: .text:00401D75). Теперь, если нам необходимо узнать, где в программе вызывается данная функция, то достаточно сделать двойной щелчок по надписи .text:00401D75 и IDA автоматически переведет Вас в нужное место вызова (рис. 13). Таким образом, можно просматривать любую цепочку вызовов функций.


Рис. 13. Место вызова функции GetSystemTimeAsFileTime

Стоит отметить очень мощную функциональность IDA в плане навигации по тексту. Чтобы вернуться в прежнее место (то есть момент до перехода по ссылке), достаточно всего лишь нажать клавишу ESC. Кроме этого, очень удобным является графическое отображение переходов в программе стрелочками в правой стороне окна дизассемблера.

Собственно, данной информации вполне достаточно для выполнения лабораторной работы.

Работа с отладчиками Visual Studio и OllyDbg

Даже для решения самых тривиальных задач в области реверсинга необходим отладчик: он позволяет динамически отслеживать ход работы программы, вносить изменения «на лету» в ее образ в памяти, следить за состоянием регистров и оперативной памяти и многое другое. Среди современных отладчиков наиболее популярными являются SoftIce из комплекта CompuwareDriverStudio и OllyDbg. SoftIce работает в режиме ядра и поэтому позволяет исследовать драйверы и компоненты Windows, работающие в ring0; однако в большинстве случаев его мощность является избыточной и целесообразнее использовать более “дружественный» OllyDbg. К тому же, OllyDbg является freeware и доступен для бесплатного скачивания в Интернете. Кроме того, мы также рассмотрим встроенный отладчик MicrosoftVisualStudio.

Отладчик VisualStudio

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

Возьмем простой пример:

Создадим простое приложение средства MS Visual Studio типа Win32 с графическим интерфейсом.

Переведем режим проекта в стадию Release (для тех, кто к 4 курсу еще не научился этому, необходимо выбрать свойства проекта Properties->Configuration Manager->Configuration и перевести из режима Debug в режим Release).

Теперь все должно быть готово к применению.

Для начала посмотрим, во что превращается обычный вызов точки входа программы. Для этого поставим точку останова на функцию _tWinMain (нажмем F9) в строке с названием функции.

Запустим приложение.

Выполнение программы должно прекратиться в поставленной нами точке. Теперь перейдем от отображения в виде Си к ассемблеру путем перехода к вкладке Disassembly (рис. 14 и 15).


Рис. 14. Исходный код программы

Рис. 15. Дизассемблированный вид программы

Попробуем подойти с практической точки зрения и посмотрим, во что превращаются некоторые стандартные конструкции языка Си.

Рассмотрим комплекс инструкций:


ULONG A, B;

A = GetTickCount();

B = 10;

if (A > B)

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