SEH на службе контрреволюции

       

в шутку расшифровываемый как Sexual


Структурной обработкой исключений (Structured Exception Handling, SEH, в шутку расшифровываемый как Sexual Exception Handling) называется механизм, позволяющей приложениям получать управление при возникновении исключительных ситуаций (например, нарушениях доступа к памяти, делении на ноль, выполнении запрещенной инструкции), и обрабатывать их самостоятельно, не вмешивая в это дело операционную систему. Необработанные исключения приводят к аварийному завершению приложения, обычно сопровождающемуся всем известным окном "программа выполнила… и будет закрыта".
Указатели на SEH-обработчики в подавляющем большинстве случаев располагаются в стеке, в так называемых SEH-фреймах, и переполняющееся буфера могут затирать их. Перезапись SEH-фреймов обычно преследует две цели: перехват управления путем подмены SEH-обработчика и подавление аварийного завершения программы при возникновении исключения. Защита от переполнения буфера, встроенная в Windows 2003 Server, как и многие другие защиты данного типа, функционирует именно на основе SEH. Перехватывая SEH-обработчик и подменяя его своим мы тем самым перекрываем защите "кислород" и она не срабатывает.
Захватывающие перспективы, не правда ли? Во всяком случае, они стоят того, чтобы в них разобраться!

Содержание раздела