Transparently interposing user code at the system interface
Michael B. Jones · 2003
The author reports on the development of an object-oriented toolkit which substantially increases the ease of interposing user code between clients and instances of the system interface by allowing such code to be written in terms of the high-level objects provided by this interface, rather than in terms of the intercepted system calls themselves. This toolkit helps enable new interposition agents to be written which otherwise would not have been attempted. It is used to construct several agents including protected environments for running untrusted binaries, modified file system namespaces, logical devices implemented entirely in user space, transparent network data compression and/or encryption agents, and system call tracing tools. Examples of other agents which could be built include transactional software environments and emulators for other operating system environments.>