System calls are selectively intercepted by processes. Processes selected
to intercept system calls are loaded by a modified loader program which
creates an association between the process and a system call wrapper.
Pointers in the interrupt vector table to system calls to be intercepted
are replaced with pointers to an interception module in operating system
address space. When system calls are made, the interception module
executes and determines whether the process that made the system call is a
selected process, associated with a system call wrapper. If the process is
a selected process, the system call wrapper executes. If the process is
not a selected process, the system call is made. In one embodiment, system
call wrappers execute in the process address space of selected processes.
In another embodiment, system call wrappers execute in user address space,
but not in the process address space of any specific processes. In yet
another embodiment, system call wrappers execute in operating system
address space.
As chamadas do sistema são interceptadas seletivamente por processos. Os processos selecionados para interceptar chamadas do sistema são carregados por um programa modificado do carregador que críe uma associação entre o processo e um envoltório da chamada do sistema. Os ponteiros na tabela do vetor da interrupção às chamadas do sistema a ser interceptadas são substituídos com os ponteiros a um módulo do interception no espaço de endereço do sistema operando-se. Quando as chamadas do sistema são feitas, o módulo do interception executa e determina se o processo que fêz a chamada do sistema é um processo selecionado, associado com um envoltório da chamada do sistema. Se o processo for um processo selecionado, o envoltório da chamada do sistema executa. Se o processo não for um processo selecionado, a chamada do sistema está feita. Em uma incorporação, os envoltórios da chamada do sistema executam no espaço de endereço process de processos selecionados. Em uma outra incorporação, os envoltórios da chamada do sistema executam no espaço de endereço do usuário, mas não no espaço de endereço process de todos os processos específicos. Em contudo uma outra incorporação, envoltórios da chamada do sistema executa no espaço de endereço do sistema operando-se.