Интернет магазин китайских планшетных компьютеров |
|
Компьютеры - Перехват (программирование)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. Просмотров: 3962
|