Kernel-Mode Driver Shimming via Context Components
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional user-mode shimming systems cannot maintain multiple linkage configurations for different drivers, leading to loss of contextual information and limiting the reusability of shims across various applications.
Innovation Solution
A system and method that employs a context component with a hook and thunk mechanism to establish and maintain driver-specific context information, allowing common shims to provide fixes for multiple drivers by redirecting driver calls through a shim engine and diagnostic components.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If conventional user-mode shimming systems are used to insert functionality between API client and API service, then additional functionality can be provided, but the systems cannot maintain multiple linkage configurations for different drivers leading to loss of contextual information
Solution Approach 1:
The patent segments the shimming system into multiple context components, each maintaining a separate linkage configuration for different drivers. Instead of a single unified shim that loses context, the system creates individual context structures (including import address tables and procedure linkage information) for each driver that needs shimming. This segmentation allows each driver to retain its unique linkage configuration while still benefiting from the shimming functionality.
Solution Approach 2:
The patent introduces context components as intermediary structures between the shimming system and the drivers. These context components act as mediators that preserve and manage the linkage configurations for multiple drivers simultaneously. The context component includes an import address table and procedure linkage information that bridges the gap between the shim code and the original driver-API interactions, preventing loss of contextual information.
2Adaptability or versatility
If a common shim is created to fix a problem across multiple applications, then reusability is improved, but conventional systems cannot apply the same shim to different drivers with different linkage configurations
Solution Approach 1:
The patent creates a universal shimming framework where a single shim implementation can serve multiple drivers with different linkage configurations. The context component is designed to be generic and adaptable, allowing the same shim code to work across different drivers by dynamically loading the appropriate context information. This universality enables one shim to fix problems across multiple applications and drivers without requiring driver-specific shim versions.
Solution Approach 2:
The patent utilizes parameter changes to adapt the shimming behavior to different drivers. The context component stores driver-specific parameters (such as import address table entries and procedure linkage information) that can be dynamically changed based on which driver is currently being shimmed. This allows a common shim to adjust its operation based on the specific driver context, maintaining reusability while handling driver-specific variations.
Data Source
AI summary
The kernel is a shared environment. Accordingly, many different kernel-mode drivers utilize services provided by the kernel. Furthermore, when shimming of drivers is necessary, it is desirable to support shim reuse amongst drivers with similar problems or issues, rather than generating a customized shim for each driver. To facilitate kernel-mode shimming and shim reuse, context information needs to be retrieved and maintained so that shims can identify particular driver calls and preserve driver specific linkage information. The present invention accomplishes the forgoing by employing an intermediate structure, a content component, between a client or driver call and a common shared shim to provide the shim with contextual information.


