Jump to content

Защитный байт

Защитный байт [ нужна ссылка ] — это часть компьютерной программы , памяти которая помогает разработчикам программного обеспечения обнаруживать переполнение буфера во время разработки программы.

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

Проверка несанкционированного доступа к защитным байтам может осуществляться двумя способами:

  • установив в памяти точку останова при условии записи и/или чтения этих байтов, или
  • путем предварительной инициализации защитных байтов определенными значениями и проверки значений при освобождении.

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

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

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

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

Проблемы

[ редактировать ]

Процедуры выделения памяти заполняют защитные байты значениями, которые не должны использоваться алгоритмами программиста. Однако это непредсказуемо. Когда алгоритм использует эти значения и перезаписывает ими защитные байты (имеет значение только последняя запись перед освобождением), переполнение невозможно обнаружить, поскольку байты фактически не изменились. Вместо этого можно использовать опцию точки останова памяти, устанавливаемую при условии доступа к этим байтам в отладчике.

См. также

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 4f4a79b31add52dcb6411493a756edd4__1709497560
URL1:https://arc.ask3.ru/arc/aa/4f/d4/4f4a79b31add52dcb6411493a756edd4.html
Заголовок, (Title) документа по адресу, URL1:
Guard byte - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)