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

9 Lea (Load Effective Address)

Данная команда похожа на команду MOV, но первый операнд - это регистр общего назначения, а второй - адрес ячейки памяти. Эта команда полезна в первую очередь тогда, когда адрес зависит от предыдущих вычислений. Для разбора команды в программе OllyDbg требуется открыть файл Crackme.exe. В открывшейся программе в окне Disassembler window в самом начале находится команда PUSH 0. Необходимо выполнить замену этой команды при помощи окна Assemble на команду LEA EAX, DWORD PTR DS:[ECX+38]. В данном случае есть квадратные скобки, однако в них задан не адрес на прямую, а вычисления, по которым он получается. До выполнения команды регистр ECX содержит значение -0012FFB0, как представлено на рисунке 1.28.

Рисунок 1.28 – Registers window

Далее необходимо выполнить команду NOP по адресу 401003 нажатием клавиши F7. В этом примере LEA прибавит к значению регистра ECX 38 и полученное значение поместит в регистр EAX: 0012FFB0+38=0012FFE8. После выполнения команды, на рисунке 1.29 видно, что указанный адрес помещен в регистр EAX.

Рисунок 1.29 – Registers window

10 Xchg (Exchange Register/Memory with Register)

Команда XCHG предназначена для обмена двух значений между регистрами или между регистрами и памятью.

Для разбора команды в программе OllyDbg требуется открыть файл Crackme.exe. В открывшейся программе в окне Disassembler window в самом начале находится команда PUSH 0. При помощи окна Assemble нужно заменить эту команду на команду XCHG EAX, ECX. Затем нажать F7. После выполнения команды регистры EAX и ECX обменялись значениями. Обмен значениями регистров показан на рисунке 1.30.

Рисунок 1.30 – Изменение значений в Registers window

Задание:

Поочередно исследовать выполнение команд перемещения, на примере программы Crackme, используя методическое методические указания.

Требования к зачету:

  1. Уметь объяснить, как выполняется команда NOP.

  2. Уметь объяснить, как выполняется команда PUSH.

  3. Уметь объяснить, как выполняется команда POP.

  4. Уметь объяснить, как выполняется команда PUSHAD.

  5. Уметь объяснить, как выполняется команда POPAD.

  6. Уметь объяснить, как выполняется команда MOV.

  7. Уметь объяснить, как выполняется команда MOVSX.

  8. Уметь объяснить, как выполняется команда MOVZX.

  9. Уметь объяснить, как выполняется команда LEA.

  10. Уметь объяснить, как выполняется команда XCHG.

Раздел 2 «Математические команды»

Цель работы:

Научиться использовать математические команды для изменения значений операндов.

Методические указания:

Для подготовки лабораторной работы использовать:

  • программу OllyDbg;

  • исполняемый файл – Crackme.exe.

  • методические указания по лабораторной работе.

В эту группу входят команды сложения, вычитания, умножения, деления и сравнения двух тридцатидвухразрядных операндов. Значение одного из операндов, участвующих в арифметических операциях, содержится в регистре общего назначения, номер которого указан в команде. В качестве второго операнда может использоваться значение, заданное непосредственно в коде команды, или содержимое другого регистра общего назначения.

Классификация арифметических команд: