IP Library Granted Patent US 9,292,417
Granted Patent B2
US 9,292,417 · App. 13/961,190 · Granted Mar 22, 2016

System and method for hypervisor breakpoints

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,292,417
App. No.
13/961,190
Granted
Mar 22, 2016
Kind
B2
Abstract

Methods and systems allow the use of hypervisors to use software breakpoints in the same manner as hardware breakpoints. A program to be tested is executed by a hypervisor running a virtual machine. A memory page containing the location of a breakpoint is copied to a temporary memory page. Then a new page is written containing breakpoint instructions at specified memory locations. The new page is tagged as execute only, so the program to be tested is unaware of any changes to the program. If the program attempts to read from the changed memory page, it will read from the temporary memory page instead. Such a method can be used to search websites for malware in relative safety because of the inability of the malware to write to memory locations that are located on a page that is execute only.

Claims (70)

1. A method for debugging a computer program comprising:

selecting, in a virtual machine controlled by a hypervisor in a host operating system, a guest memory location as a breakpoint location;

determining, in the virtual machine, a first memory page that contains the guest memory location;

replacing, by the hypervisor without knowledge by a computer program executed by the virtual machine, at least a portion of the first memory page with new content, the new content including a breakpoint instruction;

translating virtual memory to physical memory; and

in response to the replacing, setting a permission of the first memory page to execute only, such that attempts to read to or write from the first memory page by the computer program are intercepted by the hypervisor.

2. The method of claim 1 further comprising:

copying contents of the first memory page to a temporary memory page.

3. The method of claim 2 further comprising:

when the computer program attempts to read from the guest memory location, sending the computer program data from the temporary memory page.

4. The method of claim 2 further comprising:

replacing at least a portion of the temporary memory page with new content, the new content including a breakpoint instruction; and

setting the permission of the temporary memory page to execute only, such that attempts to read to or write from the temporary memory page by the computer program are prevented.

5. The method of claim 4 further comprising:

during an execution of the computer program, redirecting attempts to execute instructions located in the first memory page to the temporary memory page.

6. The method of claim 1 wherein the breakpoint instruction is an INT 3 instruction.

7. A non-transitory machine-readable medium that stores instructions which, when executed by a machine, causes the machine to perform operations comprising:

selecting, in a virtual machine controlled by a hypervisor in a host operating system, a guest memory location as a breakpoint location;

determining, in the virtual machine, a first memory page that contains the guest memory location;

replacing, by the hypervisor without knowledge by a computer program executed by the virtual machine, at least a portion of the first memory page with new content, the new content including a breakpoint instruction;

translating virtual memory to physical memory; and

in response to the replacing, setting a permission of the first memory page to execute only, such that attempts to read to or write from the first memory page by the computer program are intercepted by the hypervisor.

8. The non-transitory machine-readable medium of claim 7 further comprising instructions that cause the machine to perform operations further comprising:

copying the contents of the first memory page to a temporary memory page.

9. The non-transitory machine-readable medium of claim 8 further comprising instructions that cause the machine to perform operations further comprising:

when a computer program being debugged attempts to read from the guest memory location, sending the computer program data from the temporary memory page.

10. The non-transitory machine-readable medium of claim 8 further comprising instructions that cause the machine to perform operations further comprising:

replacing at least a portion of the temporary memory page with new content, the new content including a breakpoint instruction; and

setting the permission of the temporary memory page to execute only, such that attempts to read to or write from the temporary memory page by the computer program are prevented.

11. The non-transitory machine-readable medium of claim 8 further comprising instructions that cause the machine to further perform operations further comprising:

during an execution of a computer program being debugged, redirecting attempts to execute instructions located in the first memory page to the temporary memory page.

12. A system for debugging a computer program comprising:

memory, divided into pages including at least a first memory page;

a processor coupled to the memory;

wherein the processor is arranged to:

select, in a virtual machine controlled by a hypervisor in a host operating system, a guest memory location as a breakpoint location;

determine, in the virtual machine, the first memory page that contains the guest memory location;

replace, by the hypervisor without knowledge by a computer program executed by the virtual machine, at least a portion of the first memory page with new content, the new content including a breakpoint instruction;

translate virtual memory to physical memory; and

in response to the replace, set the permission of the first memory page to execute only, such that attempts to read to or write from the first memory page by the computer program are intercepted by the hypervisor.

13. The system of claim 12 wherein the processor is further arranged to:

copy the contents of the first memory page to a temporary memory page.

14. The system of claim 13 wherein the processor is further arranged to:

when the computer program attempts to read from the guest memory location, send the computer program data from the temporary memory page.

15. The system of claim 13 wherein the processor is further arranged to:

replace at least a portion of the temporary memory page with new content, the new content including a breakpoint instruction; and

set the permission of the temporary memory page to execute only, such that attempts to read to or write from the temporary memory page by the computer program are prevented.

16. The system of claim 15 wherein the processor is further arranged to:

during an execution of the computer program, redirect attempts to execute instructions located in the first memory page to the temporary memory page.

17. The system of claim 12 wherein the breakpoint instruction is an INT 3 instruction.

18. A method for determining the existence of malware on websites comprising:

using a browser that is executing on a virtual machine to load a website into a browser;

setting a breakpoint to detect indicia of malware; and

logging any detected indicia of malware;

wherein setting the breakpoint comprises:

selecting, in a virtual machine controlled by a hypervisor in a host operating system, a guest memory location as a breakpoint location;

determining, in the virtual machine, a first memory page that contains the guest memory location;

replacing, by the hypervisor without knowledge by a computer program executed by the virtual machine, at least a portion of the first memory page with new content, the new content including a breakpoint instruction;

translating virtual memory to physical memory; and

in response to the replacing, setting a permission of the first memory page to execute only, such that attempts to read to or write from the first memory page by the computer program are intercepted by the hypervisor.

19. The method of claim 18 further comprising:

copying the contents of the first memory page to a temporary memory page.

20. The method of claim 19 further comprising:

when the website attempts to read from the guest memory location, sending data from the temporary memory page to the website.

21. The method of claim 19 further comprising:

replacing at least a portion of the temporary memory page with new content, the new content including a breakpoint instruction; and

setting the permission of the temporary memory page to execute only, such that attempts to read to or write from the temporary memory page by the website are prevented.

22. The method of claim 21 further comprising:

during a visit to the website, redirecting attempts to execute instructions located in the first memory page to the temporary memory page.

23. The method of claim 18 wherein indicia of malware include an attempt to write to a registry; an attempt to load a Dynamic Link Library; an attempt to create a process; and an attempt to read or write to specific memory locations.

Assignments (13)
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 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Jan 8, 2021
From: RAYTHEON COMPANY
To: WEBSENSE, INC.; PORTAUTHORITY TECHNOLOGIES, LLC (FKA PORTAUTHORITY TECHNOLOGIES, INC.); RAYTHEON OAKLEY SYSTEMS, LLC; FORCEPOINT FEDERAL LLC (FKA RAYTHEON CYBER PRODUCTS, LLC, FKA RAYTHEON CYBER PRODUCTS, INC.)
Reel/Frame 055492/0146 →
RELEASE OF SECURITY INTEREST Recorded Sep 30, 2020
From: RAYTHEON COMPANY
To: FORCEPOINT LLC
Reel/Frame 053927/0280 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 4, 2020
From: FORCEPOINT LLC
To: RAYTHEON COMPANY
Reel/Frame 053389/0473 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 1, 2017
From: FORCEPOINT FEDERAL LLC
To: FORCEPOINT LLC
Reel/Frame 043397/0460 →
CHANGE OF NAME Recorded Feb 16, 2016
From: RAYTHEON CYBER PRODUCTS, LLC
To: FORCEPOINT FEDERAL LLC
Reel/Frame 037821/0818 →
PATENT SECURITY AGREEMENT Recorded Jun 9, 2015
From: WEBSENSE, INC.; RAYTHEON OAKLEY SYSTEMS, LLC; RAYTHEON CYBER PRODUCTS, LLC (FORMERLY KNOWN AS RAYTHEON CYBER PRODUCTS, INC.); PORT AUTHORITY TECHNOLOGIES, INC.
To: RAYTHEON COMPANY
Reel/Frame 035859/0282 →
CHANGE OF NAME Recorded Jun 2, 2015
From: RAYTHEON CYBER PRODUCTS, INC.
To: RAYTHEON CYBER PRODUCTS, LLC
Reel/Frame 035806/0367 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 28, 2015
From: RAYTHEON COMPANY
To: RAYTHEON CYBER PRODUCTS, INC.
Reel/Frame 035774/0322 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 8, 2013
From: SALSAMENDI, RYAN C.
To: RAYTHEON COMPANY
Reel/Frame 031086/0852 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 7, 2013
From: SALSAMENDI, RYAN C.
To: RAYTHEON COMPANY
Reel/Frame 030963/0374 →