IP Library Granted Patent US 9,015,704
Granted Patent B2
US 9,015,704 · App. 12/053,999 · Granted Apr 21, 2015

Context agent injection using virtual machine introspection

Inventors: Marshall Thomas Vandegrift (Atlanta, GA); Kevin Michael Skapinetz (Mableton, GA); Timothy David Dodd (Atlanta, GA)
Assignee: International Business Machines Corporation
G06F9/45533G06F9/445G06F9/45558G06F2009/45591
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,015,704
App. No.
12/053,999
Granted
Apr 21, 2015
Kind
B2
Abstract

A computer implemented method, apparatus, and computer usable program code for executing a process within a virtual machine. A module is injected into an operating system for the virtual machine to form an injected module. The injected module is executed to load an agent process within an application space within the virtual machine. Execution of the agent process is initiated by the injected module.

Claims (42)

1. A method for adding a program module to a kernel of an operating system in a virtual machine to load and execute an agent program in the virtual machine, the method comprising the steps of:

a computer copying the program module into a non-swappable area of memory previously allocated to the virtual machine, the computer halting execution of the operating system, the computer loading the program module for execution as part of the kernel of the operating system, the computer restarting the operating system, and the computer initiating execution of the program module in the kernel of the operating system, the program module including program instructions to load the agent program into a swappable area of memory previously allocated to the virtual machine and initiate execution of the loaded agent program as an application program whose execution is controlled by the operating system, the agent program including program instructions to perform a task;

responsive to the computer initiating execution of the program module, the computer executing the program instructions of the program module as part of the kernel of the operating system to load the agent program into the swappable area of memory and initiate execution of the loaded agent program as the application program whose execution is controlled by the operating system;

the computer executing the program instructions of the loaded agent program to perform the task responsive to the computer initiating execution of the loaded agent program, wherein the computer is another virtual machine that is privileged, and wherein the program module copying, program module loading, and program module initiated execution steps are performed by a process executing in the privileged virtual machine; and

responsive to a reboot of the operating system, the program module is not present in the kernel of the operating system prior to a subsequent loading of the program module for execution as part of the kernel, and the agent program is not present as the loaded agent program prior to a subsequent execution of the program instructions in the program module to load the agent program.

2. The method of claim 1 , wherein the step of the computer loading the program module for execution as part of the kernel of the operating system comprises:

the computer creating arguments corresponding to the program module for a loading function, the arguments including a location in the non-swappable area of memory where the copy of the program module is located;

wherein responsive to the step of the computer loading the program module for execution as part of the kernel of the operating system the computer modifies an instruction pointer to point to the program module; and

wherein the step of the computer initiating execution of the program module in the kernel of the operating system is responsive to the instruction pointer pointing to the program module responsive to the computer restarting the operating system.

3. The method of claim 1 , wherein the program instructions in the program module to load the agent program into the swappable area of memory previously allocated to the virtual machine comprise program instructions to mount a file system containing a set of components for the agent program, and wherein responsive to the step of executing the loaded agent program, the loaded agent program using the set of components to perform the task.

4. The method of claim 3 , wherein the file system is located in a disk image in memory associated with the virtual machine.

5. The method of claim 4 , wherein the disk image is selected from one of a first disk image that is part of the program module, a second disk image that is loaded by calls made by the computer to a code insertion process, and a third disk image residing in memory shared between a plurality of agent programs present in the virtual machine.

6. The method of claim 1 , wherein the loaded agent program is a virus scanning process, the virus scanning process monitoring for viruses executing within the virtual machine.

7. A data processing system comprising:

a computer-readable, storage device;

a processor unit and a memory;

first program code to copy a program module into a non-swappable area of memory previously allocated to a virtual machine, halt execution of an operating system in the virtual machine, load the program module for execution as part of a kernel of the operating system, restart the operating system, and initiate execution of the program module in the kernel of the operating system, the program module including program instructions to load an agent program into a swappable area of memory previously allocated to the virtual machine and initiate execution of the loaded agent program as an application program whose execution is controlled by the operating system, the agent program including program instructions to perform a task;

second program code to execute the program instructions of the program module as part of the kernel of the operating system to load the agent program into the swappable area of memory and initiate execution of the loaded agent program as the application program whose execution is controlled by the operating system, responsive to the initiated execution of the program module; and

third program code to execute the program instructions of the loaded agent program to perform the task, responsive to the initiated execution of the loaded agent program, wherein responsive to a reboot of the operating system, the program module is not present in the kernel of the operating system prior to a subsequent loading of the program module for execution as part of the kernel, and the agent program is not present as the loaded agent program prior to a subsequent execution of the program instructions in the program module to load the agent program, and wherein the first program code, the second program code, and the third program code are stored in the computer-readable, storage device for execution by the processor unit via the memory, and wherein the processor unit is another virtual machine that is privileged, and wherein the first program code, the second program code, and the third program code are performed by a process executing in the privileged virtual machine.

8. The data processing system of claim 7 , wherein the first program code to load the program module for execution as part of the kernel of the operating system comprises:

program code to create arguments, corresponding to the program module, for a loading function, the arguments including a location in the non-swappable area of memory where the copy of the program module is located;

wherein the first program code to load the program module for execution as part of the kernel of the operating system includes program code to modify an instruction pointer to point to the program module; and

wherein the first program code to initiate execution of the program module in the kernel of the operating system is responsive to the instruction pointer pointing to the program module responsive to the first program code restarting the operating system.

9. The data processing system of claim 7 , wherein the program instructions in the program module to load the agent program into the swappable area of memory previously allocated to the virtual machine comprise program instructions to mount a file system containing a set of components for the agent program, and wherein responsive to executing the loaded agent program, the loaded agent program using the set of components to perform the task.

10. The data processing system of claim 9 , wherein the file system is located in a disk image in memory associated with the virtual machine.

11. The data processing system of claim 10 , wherein the disk image is selected from one of a first disk image that is part of the program module, a second disk image that is loaded by calls made by the first program code to a code insertion process, and a third disk image residing in memory shared between a plurality of agent programs present in the virtual machine.

12. A computer program product for adding a program module to a kernel of an operating system in a virtual machine to load and execute an agent program in the virtual machine, the computer program product comprising:

a computer-readable storage device; and

program code, stored on the computer-readable, storage device, for copying the program module into a non-swappable area of memory previously allocated to the virtual machine, halting execution of the operating system, loading the program module for execution as part of the kernel of the operating system, restarting the operating system, and initiating execution of the program module in the kernel of the operating system, the program module including program instructions to load the agent program into a swappable area of memory previously allocated to the virtual machine and initiate execution of the loaded agent program as an application program whose execution is controlled by the operating system, the agent program including program instructions to perform a task;

program code, stored on the computer-readable storage device, for executing the program instructions of the program module as part of the kernel of the operating system to load the agent program into the swappable area of memory and initiate execution of the loaded agent program as the application program whose execution is controlled by the operating system, responsive to the initiated execution of the program module;

program code, stored on the computer-readable storage device, for executing the program instructions of the loaded agent program to perform the task, responsive to the initiated execution of the loaded agent program, wherein the program code, stored on the computer-readable storage device is program code for execution on another virtual machine that is privileged; and

wherein responsive to a reboot of the operating system, the program module is not present in the kernel of the operating system prior to a subsequent loading of the program module for execution as part of the kernel, and the agent program is not present as the loaded agent program prior to a subsequent execution of the program instructions in the program module to load the agent program.

13. The computer program product of claim 12 , wherein the program code for loading the program module for execution as part of the kernel of the operating system comprises:

program code for creating arguments, corresponding to the program module, for a loading function, the arguments including a location in the non-swappable area of memory where the copy of the program module is located;

wherein the program code for loading the program module for execution as part of the kernel of the operating system includes program code for modifying an instruction pointer to point to the program module; and

wherein the program code for initiating execution of the program module in the kernel of the operating system includes program code for restarting the operating system and is responsive to the instruction pointer pointing to the program module and is further responsive to a restarting of the operating system by the program code for restarting the operating system.

14. The computer program product of claim 12 , wherein the program instructions in the program module to load the agent program into the swappable area of memory previously allocated to the virtual machine comprise program instructions to mount a file system containing a set of components for the agent program, and wherein responsive to executing the loaded agent program, the loaded agent program using the set of components to perform the task.

15. A computer for adding a program module to a kernel of an operating system in a virtual machine to load and execute an agent program in the virtual machine, the computer comprising:

a processor unit;

a computer-readable memory;

a computer-readable, storage device; and

first program instructions for halting execution of the operating system, allocating memory in the computer, placing the program module into the allocated memory, restarting the operating system, and initiating execution of the program module in the kernel of the operating system, wherein the program module loads the agent program into the virtual machine and initiates execution of the loaded agent program as an application program whose execution is controlled by the operating system, and wherein the first program instructions are stored in the computer-readable, storage device for execution by the processor unit via the computer-readable memory, and wherein the processor unit is another virtual machine that is privileged, and wherein the first program code is performed by a process executing in the privileged virtual machine.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 13, 2021
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: KYNDRYL, INC.
Reel/Frame 057885/0644 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 25, 2008
From: VANDEGRIFT, MARSHALL THOMAS; SKAPINETZ, KEVIN MICHAEL; DODD, TIMOTHY DAVID
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 020696/0162 →
Continuity (1)
Related Publication 20090241109A1 · Sep 24, 2009