IP Library Granted Patent US 12,511,144
Granted Patent B2
US 12,511,144 · App. 17/474,527 · Granted Dec 30, 2025

Concurrent kernel and user space debugging of guest software on a virtual machine in the presence of page table isolation

Inventors: Gregory Price (Silver Spring, MD); Alex Grundwerg (Baltimore, MD)
Assignee: NIGHTWING GROUP, LLC
G06F9/45558G06F9/461G06F11/3656G06F12/1009G06F2009/45583
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 12,511,144
App. No.
17/474,527
Granted
Dec 30, 2025
Kind
B2
Abstract

A method for use in a computing device, the method comprising: transmitting, to a context manager, a context request associated with a process that is executed in a virtual machine; receiving, from the context manager, a context identifier in response to the context request; transmitting, to an introspection Application Programming Interface (API), a memory access request that is based, at least in part, on the context identifier.

Claims (44)

1 . A method for use in a computing device having a processor executing computer instructions that cause the processor to operate steps comprising:

operating a virtual machine debugger as a separate process on a virtual machine;

operating a context manager, configured to monitor one or more system events that are generated in the virtual machine, and configured to update and store in a context database a context identifying data corresponding to a specific process when at least one system event is detected by the context manager,

receiving from the debugger by the context manager, a context request associated with a process that is executed by a computer processor on a virtual machine at a specific time;

retrieving by the context manager from the context database a context identifier that corresponds to the transmitted context request, wherein said context identifier comprises a pointer to at least one user page table and at least one kernel page table that is allocated to the process associated with the context identifier, information that defines a unique state of said process, and identifies whether the process is suspended or running at the specific time;

transmitting, to an introspection Application Programming Interface (API), a computer memory access request that is based, at least in part, on the context identifier retrieved from the context database; and

accessing the computer memory where relevant data is stored after evaluation of the access request and the context identifier transmitted to the API.

2 . The method of claim 1 , wherein the memory access request includes a memory read request, the method further comprising receiving, from the introspection API, data that is retrieved from a memory that is allocated to the process, the data being retrieved from the introspection API based on the context identifier in response to the memory read request.

3 . The method of claim 1 , wherein the context database updated by the context manager comprises a plurality of entries, each entry identifying a respective page table of a corresponding process.

4 . The method of claim 1 , wherein the context identifier includes a pointer to a page table that is associated with the process, such that requests may be constructed to access memory across contexts.

5 . The method of claim 1 , wherein the context identifier includes a context object comprising a process identifier.

6 . The method of claim 1 , wherein the context request and the memory access request are transmitted by software that is configured to debug, run, or analyze the virtual machine, the software and the virtual machine being executed inside a virtual machine manager.

7 . The method of claim 1 , wherein the introspection API is configured to use, at least a portion of the context identifier in lieu of information stored in one or more context registers of the computing device.

8 . The method of claim 1 , wherein the detected system event comprises (a) an event that is generated when a new process is initiated by the virtual machine; or (b) an event that is generated when a process executing on the virtual machine transitions from one memory context to another.

9 . The method of claim 1 , wherein the context identifier, retrieved by the context manager from the context database, transmitting, to an introspection Application Programming Interface (API), a computer memory access request that is based, at least in part, on the context identifier retrieved from the context database, wherein the computer memory associated with the retrieved context identifier is different from a current memory state and different from the memory accessible by the debugger.

10 . A system, comprising:

a memory; and

at least one processor that is operatively coupled to the memory, the at least one processor executing computer instructions that cause the processor to perform the operations of:

operating a virtual machine debugger as a separate process on the virtual machine;

operating a context manager, configured to monitor one or more system events that are generated in the virtual machine, and configured to update and store in a context database a context identifying data corresponding to a specific process when at least one system event is detected by the context manager;

receiving from the debugger, by a context manager, a context request associated with a process that is executed in by a computer processor on a virtual machine at a specific time;

retrieving by the context manager from the context database a context identifier that corresponds to the transmitted context request, wherein said context identifier comprises a pointer to at least one user page table and at least one kernel page table that is allocated to the process associated with the context identifier, information that defines a unique state of said process, and identifies whether the process is suspended or running at the specific time;

transmitting, to an introspection Application Programming Interface (API), a computer memory access request that is based, at least in part, on the context identifier retrieved from the context database; and

accessing the computer memory where relevant data is stored after evaluation of the access request and the context identifier transmitted to the API.

11 . The system of claim 10 , wherein the memory access request includes a memory read request, the method further comprising receiving, from the introspection API, data that is retrieved from a memory that is allocated to the process, the data being retrieved from the introspection API based on the context identifier in response to the memory read request.

12 . The system of claim 10 , wherein the context database updated by the context manager comprises a plurality of entries, each entry identifying a respective page table of a corresponding process.

13 . The system of claim 10 , wherein the context identifier includes a pointer to a page table that is associated with the process, such that requests may be constructed to access memory across contexts.

14 . The system of claim 10 , wherein the context identifier includes a context object comprising a process identifier.

15 . The system of claim 10 , wherein the context request and the access request are transmitted by software that is configured to debug, run, or analyze the virtual machine, the software and the virtual machine being executed inside a virtual machine manager.

16 . The system of claim 10 , wherein the introspection API is configured to use, at least a portion of the context identifier in lieu of information stored in one or more context registers of the computing device.

17 . The system of claim 10 , wherein the detected system event comprises (a) an event that is generated when a new process is initiated by the virtual machine; or (b) an event that is generated when a process executing on the virtual machine transitions from one memory context to another.

18 . The system of claim 10 , wherein the at least one processor executes computer instructions that further cause the processor to retrieve by the context manager from the context database the context identifier that is different from a current memory state and different from the memory accessible by the debugger.

19 . A non-transitory computer-readable medium storing one or more processor executable instructions, which, when executed by at least one processor, cause the at least one processor to perform the operations of:

operating a virtual machine debugger as a separate process on the virtual machine;

operating a context manager, configured to monitor one or more system events that are generated in the virtual machine, and configured to update and store in a context database a context identifying data corresponding to a specific process when at least one system event is detected by the context manager;

receiving from the debugger by a context manager, a context request associated with a process that is executed in by a computer processor on a virtual machine at a specific time;

retrieving by the context manager from the context database a context identifier that corresponds to the transmitted context request, wherein said context identifier comprises a pointer to at least one user page table and at least one kernel page table that is allocated to the process associated with the context identifier, information that defines a unique state of said process, and identifies whether the process is suspended or running at the specific time;

transmitting, to an introspection Application Programming Interface (API), a computer memory access request that is based, at least in part, on the context identifier retrieved from the context database; and

accessing the computer memory where relevant data is stored after evaluation of the access request and the context identifier transmitted to the API.

20 . The non-transitory computer-readable medium of claim 19 , wherein the memory access request includes a memory read request, the method further comprising receiving, from the introspection API, data that is retrieved from a memory that is allocated to the process, the data being retrieved from the introspection API based on the context identifier in response to the memory read request.

21 . The non-transitory computer-readable medium of claim 19 , wherein the context database updated by the context manager comprises a plurality of entries, each entry identifying a respective page table of a corresponding process.

22 . The non-transitory computer-readable medium of claim 19 , wherein the context identifier includes a pointer to a page table that is associated with the process, such that requests may be constructed to access memory across contexts.

23 . The non-transitory computer-readable medium of claim 19 , wherein the context identifier includes a context object comprising a process identifier.

24 . The non-transitory computer-readable medium of claim 19 , wherein the context request and the access request are transmitted by software that is configured to debug, run, or analyze the virtual machine, the software and the virtual machine being executed inside a virtual machine manager.

Assignments (4)
CHANGE OF NAME Recorded Jul 3, 2024
From: COLUMBUS BUYER LLC
To: NIGHTWING GROUP, LLC
Reel/Frame 068106/0251 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 2, 2024
From: RAYTHEON COMPANY
To: COLUMBUS BUYER LLC
Reel/Frame 068233/0420 →
SECURITY INTEREST Recorded Apr 1, 2024
From: COLUMBUS BUYER LLC; RAYTHEON BLACKBIRD TECHNOLOGIES, INC.; RAYTHEON FOREGROUND SECURITY, INC.
To: WELLS FARGO BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 066960/0411 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 17, 2023
From: PRICE, GREGORY; GRUNDWERG, ALEX
To: RAYTHEON COMPANY
Reel/Frame 065251/0501 →
Continuity (2)
Provisional Application 63083149 · Sep 25, 2020
Related Publication 20220100549A1 · Mar 31, 2022
References Cited (11)
US 10768966B1 · Naenko · 2020 [cited by examiner]
US 10977192B1 · Habusha · 2021 [cited by examiner]
US 11010280B1 · Stupachenko · 2021 [cited by examiner]
US 20090019458A1 · Katari · 2009 [cited by examiner]
US 20100138679A1 · Yoshida · 2010 [cited by examiner]
US 20110058440A1 · Smith · 2011 [cited by examiner]
US 20130013603A1 · Parker · 2013 [cited by examiner]
US 20140297780A1 · Zhou · 2014 [cited by examiner]
US 20180060574A1 · White · 2018 [cited by examiner]
US 20180232248A1 · Tal · 2018 [cited by examiner]
US 20200050783A1 · Yamada · 2020 [cited by examiner]