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



Компьютеры - Перехват (программирование)

19 февраля 2011


Оглавление:
1. Перехват (программирование)
2. Виды перехвата системных функций
3. Перехват в режиме ядра
4. Иные формы перехвата



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

Назначение технологии перехвата

Очень часто в системном программировании возникает задача изменения стандартного поведения системных функций. Например довольно интересным применением данной технологии является переопределение оконной процедуры у GUI приложений Windows. Это нужно, если программист хочет организовать собственную обработку какого-либо оконного сообщения и только потом передать стандартной оконной процедуре. После сабклассинга цикл обработки сообщений будет выглядеть так:

  • ДО САБКЛАССИНГА:

Сообщение Windows->Окно

  • ПОСЛЕ:

Сообщение Windows->Наша оконная процедура->Окно

Например, в Уроках Iczelion’а описан пример того, как сабклассинг может использоваться для организации контроля ввода в элементы управления. Технологии перехвата нужны не только в этом случае, но и например для предварительной обработки результатов системных функций поиска файлов FindFirst и FindNext, EnumProcess, которая перечисляет процессы в Windows и т. д. Причем в этих целях такие технологии применяют как антивирусные средства, так и различного рода вирусы, руткиты и прочие виды вредоносного программного обеспечения.

Очень часто перехват бывает важен для организации отладки программ и является одной из основных технологий, применяемых в отладчиках. В данном случае эта технология позволяет контролировать одной программе выполнение другой. Для этих целей предусмотрен системный вызов ptrace, который позволяет подключаться к процессам, отслеживать значения регистров у контекста отлаживаемого процесса и в том числе контролировать другие системные вызовы. Он является основой для реализации такой возможности отладчиков как точки останова. Данный системный вызов хорошо документирован и присутствует во всех главных *Nix системах: Linux, FreeBSD, Solaris. Чаще всего используется совместно с системным вызовом fork, который и вызывает ptrace, указывая в параметрах вызова, что запускаемый процесс — дочерний. Microsoft Windows также предоставляет для схожих целей т. н. DebugAPI.



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


<<< Отладчик
Kernel panic >>>