Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа5.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
491.01 Кб
Скачать

Раздел 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.