
- •Лабораторная работа №5 «Основные функции программы OllyDbg»
- •Раздел 1
- •«Работа с регистрами»
- •1.1 Регистры
- •1.1.1 Изменение значения регистра
- •1.1.2 Использование частей 32-битных регистров
- •1.2 Ascii – символы
- •Раздел 2 «Дизассемблирование и анализ машинных программ»
- •1.1 Установка обычной точки останова
- •1.2 Редактирование команды
- •1.3 Операция Go to
- •1.4 Операция Undo selection
- •1.5 Entry Point (Точка входа)
- •1.6 Способы адресации
- •1.6.1 Прямая адресация
- •1.6.2 Косвенная адресация
- •1.7 Dll (динамические библиотеки)
- •1.8 Операции с api функциями
- •1.9 Сохранение изменений
Раздел 2 «Дизассемблирование и анализ машинных программ»
Цель работы:
Изучение принципов дизассемблирования и анализа машинных программ, получение навыков работы с программой дизассемблера.
Методические указания:
Для подготовки лабораторной работы использовать:
программу OllyDbg;
исполняемый файл – Crackme.exe.
методические указания по лабораторной работе.
Когда некоторая программа производит исключение, Windows может вызывать зарегистрированный отладчик и подключить его к программе. Эта особенность называется Just-in-time debugging (своевременной отладкой).
В OllyDbg одними из самых необходимыми при исследовании программ являются: операция для перехода по адресу на нужные байты и операция для возврата обратного значения измененных байтов, а также возможность редактирования команды.
Процесс дизассемблирования представляет собой формирование программы на языке ассемблера по исходной объектной программе. Это может понадобиться для контроля текста при отладке программы, когда в процессе отладки сразу же вносятся изменения в исходную программу или если необходимо восстановить алгоритм по объектной программе без документации.
1.1 Установка обычной точки останова
Точки останова - это очень мощное средство отладки приложения. Они позволяют разобраться в логике выполнения программы, давая мгновенные снимки регистров, стеков и данных в определенные моменты выполнения.
Классификация точек останова:
обычные точки останова;
условные точки останова;
условные точки останова с записью в журнал;
точки останова на сообщения Windows;
точки останова на функции импорта;
точки останова на область памяти;
аппаратные точки останова.
Для ознакомления с принципом работы точек останова будут рассмотрены обычные точки останова.
Обычные точки останова ставятся на конкретную команду. Этот вид точек останова, в первую очередь, помогает найти корреляцию между ходом выполнения программы: появление окон, сообщений, и конкретными участками программного кода. Кроме того в точке останова можно проверить состояние регистров, переменных, состояние стека.
Существует два способа установки обычных точек останова.
Первый способ: необходимо подвести курсор к той строке в окне Disassemble window , в которой требуется остановиться и отметить эту строку, щелкнув по ней левой кнопкой мыши. Отмеченная линия становится серого цвета. Далее нужно нажать клавишу F2, соответствующая строка в первом столбце становится красной, как показано на рисунке 1.1. Затем, если еще раз нажать F2 можно убрать установленную точку останова.
Рисунок 1.1 – Disassemble window
Второй способ: необходимо подвести курсор к той строке в окне Disassemble window, в которой необходимо остановиться и двойным щелчком по левой кнопке мыши в области столбца Hex dump, поставить точку останова, строка подсветится. Повторный двойной щелчок по левой кнопке мыши в этой строке уберет установленную точку останова.
1.2 Редактирование команды
Чтобы изменить команду необходимо в окне Disassembler window выбрать строку, содержащую эту команду (инструкцию). Эта строка выбирается двойным щелчком левой кнопки мыши по этой строке в области столбца Disassembly или нажатием кнопки Space (пробел). Откроется окно Assemble, изображенное на рисунке 1.2, для ввода необходимой команды.
Рисунок 1.2 – Окно Assemble
Далее вводится необходимая команда и для изменения ее в программе требуется лишь нажать кнопку Assemble, иначе кнопку Cancel.