Основы языка ассемблера презентация в формате PowerPoint - скачать бесплатно

Скачать презентацию на тему: "Основы языка ассемблера" с количеством слайдов в размере 74 страниц. У нас вы найдете презентацию на любую тему и для каждого класса школьной программы. Мы уверены, что наши слайды помогут найти вам свою аудиторию. Весь материал предоставлен бесплатно, в знак благодарности мы просим Вас поделиться ссылками в социальных сетях и по возможности добавьте наш сайт MirPpt.ru в закладки.

Содержание [Показать]

Нажмите для просмотра
Основы языка ассемблера

1: Основы языка ассемблера

2: План лекции Устройство компьютера Устройство процессора Режимы работы процессора Регистры процессора Языки ассемблера Формат команд (инструкций) Команды ассемблера Процесс создания программы Адресное пространство процесса Системные структуры и механизмы

3: Основные понятия Ассемблер – транслятор исходного кода программы, на языке ассемблера в машинный код Дизассемблер Машинный код Машинное слово

4: Фон-неймановская архитектура Принцип однородности памяти Принцип адресности Принцип программного управления Принцип двоичного кодирования

5: Архитектура компьютера ЦПУ Оперативная память (ОЗУ) Северный мост Южный мост BIOS (ППЗУ) Периферийные устройства Системная шина (адреса, данных, управления)

6: Устройство персонального компьютера

7: Процессор Регистры АЛУ RSB Кэш-память (кода и данных) TLB L1, L2, L3

8: Материнская плата

9: Режимы работы процессора Реальный режим (real mode) Защищенный режим (protected mode) Режим виртуального 8086 Режим системного управления (SMM)

10: Кольца защиты (Ring) Ring -2 (Режим системного управления, System Management Mode) Ring -1 (режим гипервизора, Hypervisor mode) Ring 0 (режим ядра, супервизора – ring mode, supervisor mode) Ring 1 Ring 2 Ring 3 (режим пользователя, user mode)

11: Реальный режим Физические адреса от 0 до 1 Мб Макс размер сегмента 64 Кб (16 разр) Использование сегментной адресации

12: Типы данных Двоичные числа Двоично-десятичные числа Неупакованный BCD-формат Упакованный BCD-формат Числа с плавающей точкой Символьный тип

13: Регистры процессора Регистры общего назначения (EAX, EBX, ECX, EDX) Адресные регистры (ESI, EDI, EBP) Управляющие регистры (ESP, EIP, EFLAGS) Сегментные регистры (CS, DS, SS, ES, GS, FS) Регистры управления памятью (GDTR, LDTR, IDTR) Регистры управления (CR0-CR4) Отладочные регистры (DR0-DR7) Машинно-зависимые регистры (MSR)

14: Регистры общего назначения

15: Адресные регистры ESI – индекса источника EDI - регистр индекса результата EBP - регистр указатель стековой базы

16: Регистры состояния ESP - Указатель на вершину стека EIP - Cчетчик команд EFLAGS - Регистр флагов

17: Регистры управления CR0 CR1 CR2 CR3 CR4

18: Регистр EFLAGS / FLAGS

19: Сегментные регистры 16-битные регистры для хранения селекторов сегмента CS – сегмент кода DS – сегмент данных SS – сегмент стека Дополнительные сегменты: ES GS FS

20: Системные регистры GDTR LDTR IDTR TR

21: Регистры x64

22: Порты ввода/вывода (I/O Ports) Используются для взаимодействия с утройствами IN eax, portnum (DX) – чтение из порта OUT portnum(DX), eax- запись в порт

23: MSR–регистры (Model-Specific Registers) Зависят от модели процессора Вызываются только из режима ядра RDMSR – чтение, ECX –номер MSR Результат - EDX:EAX WRMSR Примеры: RDTSC – читает MSR-регистр IA32TIMESTAMPCOUNTER (0x10) SYSENTER/SYSEXIT, SYSCALL/SYSRET

24: Расширения инструкций процессора Работа с аудио- и видео-данными FPU / NPX MMX MMX Extended 3dNow! 3dNow! Extended SSE SSE2 SSE3 SSSE3 SSE4 AVX

25: Стек ESP – хранит адрес вершины стека EBP – хранит адрес начала стекового фрейма SS – регистр, хранит селектор стека Стек – растет от старших адресов к младшим

26: Языки ассемблера Команды языка соответствуют инструкциям процессора Синтаксисы: Intel AT&T Ассемблеры: MASM NASM FASM TASM GAS

27: Типы команд Арифметические Логические Передачи данных Перехода Пропуска Вызова подпрограммы Возврата из подпрограммы Смешанные

28: Формат команды Поле префиксов Замена сегмента Изменение размерности адреса Изменение размерности операнда Необходимость повторения команды Поле кода операции Поле операндов (от 0 до 2)

29: Пример Префикс Команда Операнды

30: Типы операндов Байт Слово Десятичный операнд Разряд Число Составной операнд

31: Способы адресации 1 Регистровая адресация mov ax, bx Непосредственная адресация mov ax, 2 Прямая адресация mov ax, es:0001 mov ax, ds:wordvar (ds – по умолчанию) Косвенная адресация mov ax, bx Адресация по базе со сдвигом mov ax, bx2 mov eax, ebp2 / mov eax, 2ebp

32: Способы адресации 2 Косвенная адресация с масштабированием mov eax, esi32 Адресация по базе с индексированием mov ax, bxsi2 mov ax, bxsi2 Адресация по базе с индексированием и масштабированием mov edx, es:eaxecx24

33: Порядок байт big-endian, от старшего к младшему (SPARC, TCP/IP) little-endian, от младшего к старшему (x86) bi-endian – переключаемый порядок middle-endian – смешанный порядок

34: Формат хранения переменных

35: ASCII

36: Команды пересылки 1. MOV DST,SRC; переслать (SRC) в (DST). 2. PUSH RP; поместить на вершину стека содержимое пары регистров RP (например push bx). 3. POP RP; снять с вершины стека два байта и поместить в пару RP (например pop ax). 4. XCHG DST, SRC; поменять местами содержимое (DST) и (SRC). Оба операнда не могут быть одновременно содержимым ячеек памяти. 5. XLAT SRC; извлечь из таблицы с начальным адресом SRC байт данных имеющий номер от начала таблицы (AL), и поместить его в AL. Адрес SRC должен находиться в регистре BX. Другой вариант: XLATB. 6. LEA RP,M; загрузить в регистр RP эффективный адрес (смещение) ячейки памяти с символическим адресом M.

37: Арифметические команды 1. ADD DST, SRC; сложить содержимое SRC и DST и результат переслать в DST. add al, membyte; membyte однобайтовая ячейка памяти add memword, dx; memword двухбайтовая ячейка памяти add ch,10001010b; 2. INC DST; увеличить (DST) на 1 (инкремент (DST)). 3. SUB DST, SRC; вычесть (SRC) из (DST) и результат поместить в DST. 4. DEC DST; декремент (DST). 5. CMP DST, SRC; сравнить содержимое DST и SRC. Эта команда выполняет вычитание (SRC) из (DST) но разность не помещает в DST и по результату операции воздействует на флаги.

38: Логические команды и команды сдвига 1. AND DST, SRC; поразрядное логическое "И". 2. OR DST, SRC; поразрядное логическое "ИЛИ". 4. NOT DST; инверсия всех битов приемника. 5. TEST DST, SRC; выполняет операцию AND над операндами, но воздействует только на флаги и не изменяет самих операндов. 6. SHR DST, CNT; логический сдвиг вправо, освобождающиеся слева биты заполняются нулем, крайний правый бит выталкивается во флаг CF. Операнд DST может быть ячейкой 7. SHL DST, CNT; логический сдвиг влево. 8. RLC DST, CNT; циклический сдвиг влево через перенос 9. RRC DST, CNT;циклический сдвиг вправо через перенос 10. ROR DST, CNT;циклический сдвиг влево 11. ROL DST, CNT;циклический сдвиг вправо

39: Использование сдвигов Умножение Деление Работа с 64 переменными

40: Команды передачи управления 1. CALL SUBR; вызов подпрограммы с адресом SUBR; 2. RET; возврат из подпрограммы к оператору следующему непосредственно за CALL, то есть в приведенном выше примере к MOV . . 3. JMP NAME; безусловный переход к команде с символическим адресом NAME. 4. JA NAME или JNBE NAME; условный переход, если, например, в результате сравнения CMP DST, SRC приемник по абсолютной величине больше источника, то перейти к метке name. 5. JB NAME или JNAE NAME; условный переход, если, например, в результате сравнения CMP DST, SRC приемник по абсолютной величине меньше источника, то перейти к метке name (команды п4 и п5 выполняются по результатам выполнения операций над беззнаковыми числами). 6. JZ NAME или JE NAME; перейти, если результат операции влияющей на флаг нуля - нулевой (переход по "нулю"). 7. JNZ NAME или JNE NAME; переход по "не нулю". (команды п6 и п7 выполняются по результатам выполнения операций над числами cо знаком).

41: 2. 6 Instruction types Data transfer instructions

42: 2. 6 Instruction types Arithmetic instructions

43: 2. 6 Instruction types Bit manipulation instructions

44: 2. 6 Instruction types String instructions

45: Основные команды CALL / RET JMP PUSH / POP JE / JNE XOR MOV CMP NOP

46: Команды условного перехода

47: Безусловный переход (JMP)

48: NOP No OPeration 0x90

49: Пример E8 – опкод call 8E FE FF FF – аргумент, little-endian ff ff fe 8e -0x172 (-370) checkpass 0x40126D – 0x172 5 (размер инструкции) 0x401100

50: Опкоды инструкций Принцип построения

51: Основные инструкции

52: Управляющие структуры: IF-ELSE if then else mov eax, A cmp eax, B jne then mov C, 5 jmp end then: mov C, 3 end:

53: Управляющие структуры:switch-case

54: Передача параметров: механизм По значению По ссылке По возвращаемому значению По результату По имени Отложенным вычислением

55: Передача параметров: место хранения В регистрах В глобальных переменных В стеке В потоке кода В блоке параметров

56: Структура исполняемого файла Секции: Кода Данных Стека Кучи Неинициализированных переменных (bss)

57: Процесс компиляции

58: Средства отладки Linux: ktrace, gdb, ddd, readelf, nm

59: Средства разработки GCC CL VS

60: Адресное пространство процесса: Windows

61: Адресное пространство процесса: Linux

62: Структура стека

63: Стековый кадр Вызов функции call push eip, jmp func ret pop eip, jmp eip Пролог функции push ebp mov ebp, esp Эпилог функции mov esp, ebp pop ebp enter / leave

64: Стековый кадр

65: Стековый кадр: пример

66: Соглашения о вызове (calling convention)

67: Thread Environment Block (TEB) Wow64 процессы в Windows имеют два PEB и два TEB. TEB создается функцией MmCreateTeb, PEB создается функцией MmCreatePeb TEB — структура которая используется для хранения информации о потоках в текущем процессе, каждый поток имеет свой TEB.

68: Thread Environment Block (TEB) TEB0 Указатель на первый SEH на стэке. TEB4 Указатель на конец области памяти, выделенных на стеке. TEB8 Указатель на начало области памяти выделенных на стеке, для контроля исключений переполнения стека. TEB18 Адрес текущей TEB. TEB30 Адрес PEB.

69: PEB PEB содержит все параметры пользовательского процесса: местоположение главной выполняемой программы указатель/загрузчик данных (может использоваться, для перечисления всех dll/модулей, которые были/могут быть загруженными в процесс) указатель на информацию о динамической памяти (heap - куче)

70: PEB Находится в TIB0x30, fs:0x30

72: Системные таблицы SSDT IDT LDT

73: Системные вызовы INT 2e SYSENTER/SYSEXIT, SYSCALL/SYSRET ntdllKiFastSystemCall Номер в таблице SSDT CreateFile-NtCreateFile-ZwCreateFile

74: Литература Зубков С. В. Assembler для DOS, Windows и Unix Касперски К. , Рокко Е. Искусство дизассемблирования Юричев Д. Reverse Engineering для начинающих

Скачать презентацию


MirPpt.ru