Редактирование: ИБ, 07 лекция (от 15 ноября)
Материал из eSyr's wiki.
Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
- | Сегодня мы вспоминаем ассемблер, | + | Сегодня мы вспоминаем ассемблер, рассм. сферический процессор в вакууме, не конкретную модель, но отдельные особенности, важные для уязвимостей. |
- | + | Рассм. будут ососбенности на платформе Linux, поэтому рассм. две нотации — Intel исп. свою нотацию в своих техдоках, в Linux е=практ. единственный комплилятор это gas, синтаксис у него AT&T. | |
- | Сферический процессор в | + | Сферический процессор в вакууму сост. из ..., устройства ввода-вывода могут читать/писать байты, в оперативной памяти хранятся байты. |
- | Далее, собственно процессор, | + | Далее, собственно процессор, уту он у нас уже несколько овальный. |
Регистры. ... | Регистры. ... | ||
Строка 11: | Строка 11: | ||
Виртуальная память процесса. Каждая программа считает, что она единолично управлет ресурсами системы. По крайней мере, ОС пытается сделать вид. У каждого процесса есть своя виртуальная память. | Виртуальная память процесса. Каждая программа считает, что она единолично управлет ресурсами системы. По крайней мере, ОС пытается сделать вид. У каждого процесса есть своя виртуальная память. | ||
- | Важная | + | Важная ососбенность всего этого: все сегменты стека расстут снизу вверх. Стек же растёт вниз. Почему это важно: push и mov работают как бы наоборот, и это ведёт к ряду интересных эффектов, которые позв. эксплуатировать уязв. вида переполн.стека 15 лет назад. |
- | Подробнее про стек. Стек работает по | + | Подробнее про стек. Стек работает по алг. FIFO. Для работы со стеком есть спец. архитектуры. Ничто не мешает при этом работать со стеком как с линейной памятью. Что хранится в стеке: локальные переменные, аргументы, адрес возврата. |
Важно помнить, что call/ret/push меняют esp/ebp. esp всегда смотрит на вершину стека. Зная только его, мы не можем знать, где мы вообще. Для этого есть ebp. | Важно помнить, что call/ret/push меняют esp/ebp. esp всегда смотрит на вершину стека. Зная только его, мы не можем знать, где мы вообще. Для этого есть ebp. | ||
- | Про размещение объектов. Есть три способа: статически, динамически или автоматически. | + | Про размещение объектов. Есть три способа: статически, динамически или автоматически. Автоматич.разм. исп. для лок. переменных и параметров функций. |
{{ИБ}} | {{ИБ}} | ||
{{Lection-stub}} | {{Lection-stub}} |