
- •Лабораторная работа №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 Сохранение изменений
Лабораторная работа №5 «Основные функции программы OllyDbg»
Раздел 1
«Работа с регистрами»
Цель работы:
Получение навыков работы с регистрами.
Методические указания:
Для подготовки лабораторной работы использовать:
программу OllyDbg;
исполняемый файл – Crackme.exe.
методические указания по лабораторной работе.
Микропроцессор включает в себя регистры общего назначения, регистр флагов, сегментные регистры, управляющие регистры, системные адресные регистры и отладочные регистры. Следует отметить регистр EIP – указатель команд. В нем содержится адрес исполняемой команды относительно начала сегмента. К данному регистру нет прямого доступа.
Регистры EAX, EBX,EDX,ECX называются рабочими регистрами. Эти регистры имеют подрегистры. Например, первые 16 битов регистра EAX обозначаются как AX.В свою очередь младший байт AX обозначается как AL, а старший AH.
Регистры EDI, ESI – индексные регистры, играют особую роль в строковых операциях. Регистр EBP обычно используется для адресации в стеке параметров и локальных переменных.
Регистр ESP – указатель стека. Регистры ESI, EDI, ESP, EBP также имеют подрегистры.
1.1 Регистры
Регистры содержат различные значения и служат для помощи процессору в выполнении инструкций. Так регистр ESP – указывает на самое верхнее значение стека, регистр EIP – на инструкцию, выполняющуюся в данный момент. Существуют регистры: EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI и EIP они называются 32-битными. Программа OllyDbg отображает их содержимое в шестнадцатеричной форме. Например, минимальное значение EAX может быть равно 00000000, а максимальное – FFFFFFFF.
1.1.1 Изменение значения регистра
Чтобы изменить значение регистра, необходимо в окне Registers window щелкнуть левой кнопкой мыши, по строке содержащей это значение. Затем, нажать правую кнопку мыши и в контекстном меню выбрать команду Modify (Enter), как показано на рисунке 1.1.
Рисунок 1.1 – Registers window
Откроется окно Modify – модификации регистра, которое состоит из полей:
Hexadecimal – задается шестнадцатеричное значение, которое необходимо конвертировать;
Signed – появляется соответствующее десятеричное значение;
Unsigned – появляется значение соответствующее, значению поля Signed, но без знака.
Чтобы изменить значение регистра в поле Hexadecimal вводится необходимое значение, как показано на рисунке 1.2. Далее при нажатии на кнопку OK, измененное значение сохраняется, а при нажатии на кнопку Cancel – выход без изменений.
Рисунок 1.2 – Окно Modify
Измененные значения в программе OllyDbg выделяются красным цветом, как например на рисунке 1.3.
Рисунок 1.3 – Registers window
Подобное изменение значения можно проделать для любого регистра, исключение составляет регистр EIP, указывающий на инструкцию, которая должна выполниться. Поскольку этот регистр всегда указывает на инструкцию, которая должна выполниться, то для того чтобы изменить его значение нужно выбрать новую команду в листинге. Для этого надо щелкнуть левой кнопкой мыши в окне Disassembler window по строке, содержащей инструкцию с которой необходимо продолжить выполнение программы. Далее, вызвав контекстном меню, выбрать команду New origin here, как показано на рисунке 1.4.
Рисунок 1.4 – Disassembler window
Значение регистра EIP изменится и программа продолжит выполнение именно с этого места.