Интернет магазин китайских планшетных компьютеров



Компьютеры - Стековый кадр - Соглашения для разных языков программирования

22 января 2011


Оглавление:
1. Стековый кадр
2. Соглашения для разных языков программирования



Различные компиляторы языков высокого уровня по-разному подходят к организации стекового кадра в зависимости от особенностей аппаратной платформы и стандартов конкретного языка. Основные отличия касаются порядка передачи аргументов в стек и их снятии со стека при возврате.

Недостатки стекового кадра

Стековый кадр — удобная технология выделения временной памяти для передачи произвольного числа аргументов или внутреннего использования. Однако она имеет ряд недостатков.

Производительность

Передача данных через память без необходимости замедляет выполнение программы.

Для уменьшения обращений к локальным переменным программа оптимизируется при компиляции для использования регистров вместо переменных в памяти или для хранения их промежуточных значений.

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

Безопасность

Стековый кадр перемежает данные приложения с критическими данными — указателями, значениями регистров и адресами возврата. Это, в сочетании с архитектурными особенностями некоторых процессоров, делает злонамеренное перекрытие критических данных в результате переполнения буфера очень легко достижимым.

Такое «неудачное», с точки зрения переполнения буфера, направление роста машинного стека имеют аппаратные платформы: X86.

Атака по переполнению буфера в стеке обычно реализуется следующим образом:

  • Атакующая программа отправляет на сетевое соединение блок данных, заведомо больший размера буфера целевой программы.
  • Неправильно написанная процедура позволяет лишним данным быть записанными дальше границ буфера, через начало стекового кадра и адрес возврата. Блок данных скомпонован так, чтобы адрес возврата в стеке замещался адресом кода эксплоита, который находится в том же загруженном блоке данных.
  • При возврате из уязвимой процедуры управление через измененный адрес возврата передается на код эксплоита.


Просмотров: 2347


<<< Хранимая процедура
Шитый код >>>