IP Library Granted Patent US 10,623,438
Granted Patent B2
US 10,623,438 · App. 15/392,770 · Granted Apr 14, 2020

Detecting execution of modified executable code

Inventors: Venkata Ramanan Sambandam (Santa Clara, CA); Carl D. Woodward (Santa Clara, CO); Dmitri Rubakha (Santa Clara, CA); Steven L. Grobman (El Dorado Hills, CA)
Assignee: McAfee, LLC
H04L63/145G06F21/56G06F21/565G06F21/566H04L63/1425G06F12/0802
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 10,623,438
App. No.
15/392,770
Granted
Apr 14, 2020
Kind
B2
Abstract

A technique for detecting malware uses hardware capabilities of the processing element of a programmable device to detect modification of executable code during execution. By monitoring a dirty bit in page tables, pages that have been modified can be detected, allowing analysis of those pages during execution. An indication may then be passed to an anti-malware software to analyze the executable further.

Claims (58)

1. A first storage device or first storage disk comprising first executable instructions that, when executed, cause a processor to at least:

in response to an interrupt from a performance monitoring unit after a memory page including second executable instructions has been loaded into local memory from a second storage device and has been accessed from the local memory, determine whether the second executable instructions of the memory page have been modified thereby changing the memory page into a modified memory page; and

in response to the second executable instructions of the modified memory page having been modified, trigger a client routine to perform anti-malware analysis of at least a portion of the modified memory page before the modified memory page is written back to the second storage device.

2. The first storage device or the first storage disk of claim 1 , wherein the first executable instructions, when executed, cause the processor to determine whether the second executable instructions of the memory page have been modified by:

examining a page table entry maintained by the processor; and

determining that the second executable instructions of the memory page have been modified based on the page table entry.

3. The first storage device or the first storage disk of claim 1 , wherein the first executable instructions, when executed, cause the processor to:

determine whether the second executable instructions of the memory page have been whitelisted or have been generated by a whitelisted module; and

refrain from triggering the client routine to perform the anti-malware analysis of the memory page when the second executable instructions of the memory page have been whitelisted or have been generated by the whitelisted module.

4. The first storage device or the first storage disk of claim 1 , wherein the first executable instructions, when executed, cause the processor to:

determine whether the second executable instructions of the modified memory page have changed since a previous analysis of the modified memory page; and

refrain from triggering the client routine to perform the anti-malware analysis of the modified memory page when the second executable instructions of the modified memory page have not changed since the previous analysis of the memory page.

5. The first storage device or the first storage disk of claim 1 , wherein the first executable instructions, when executed, cause the processor to determine whether the second executable instructions of the memory page have been modified by:

calculating a hash of the memory page;

determining whether the hash is in a hash table of previously examined memory pages; and

determining that the second executable instructions of the memory page have not been modified when the hash is in the hash table.

6. The first storage device or the first storage disk of claim 1 , wherein the first executable instructions cause the processor to execute a first routine at a first priority to determine whether the second executable instructions of the memory page have been modified and to execute a second routine at a second priority lower than the first priority.

7. The first storage device or the first storage disk of claim 6 , wherein the first executable instructions, when executed, cause the processor to queue a trigger object on a trigger queue maintained by a kernel of an operating system associated with the processor.

8. The first storage device or the first storage disk of claim 1 , wherein the second executable instructions of the memory page include a call or jump instruction.

9. A method of improving detection of malware, the method comprising:

in response to an interrupt from a performance monitoring unit after a memory page including executable instructions has been loaded into local memory from a storage device and has been accessed from the local memory, determining whether the executable instructions of the memory page have been modified thereby changing the memory page into a modified memory page; and

in response to the executable instructions of the modified memory page having been modified, performing anti-malware analysis of at least a portion of the modified memory page before the modified memory page is written back to the storage device.

10. The method of claim 9 , further including:

examining a hardware-maintained page table entry; and

determining the executable instructions of the memory page have been modified based on the page table entry.

11. The method of claim 9 , further including:

determining whether the executable instructions associated with the memory page have been blacklisted; and

ignoring the memory page when the executable instructions have not been blacklisted.

12. The method of claim 9 , further including:

determining whether the executable instructions of the modified memory page have changed since a previous examination of the modified memory page; and

ignoring the modified memory page when the executable instructions of the modified memory page have not changed since the previous examination.

13. The method of claim 9 , further including:

generating a hash of the memory page;

determining whether the hash is in a hash table of previously examined memory pages; and

determining that the executable instructions of the memory page have not been modified when the hash is in the hash table.

14. The method of claim 9 , further including executing a first routine at a first priority to determine whether the executable instructions of the memory page have been modified, and executing a second routine at a second priority to queue a trigger object to trigger the anti-malware analysis, the second priority lower than the first priority.

15. The method of claim 14 , further including queuing the trigger object on a trigger queue maintained by a kernel of an operating system associated with the performance monitoring unit.

16. The method of claim 9 , wherein the executable instructions of the memory page include a call or jump instruction.

17. The method of claim 16 , further including generating the interrupt only upon a threshold plurality of occurrences of the call or jump instruction.

18. A programmable device to detect malware, the programmable device comprising:

a processor; and

a memory including first executable instructions that, when executed, cause the processor to:

in response to an interrupt from a performance monitoring unit after a memory page including second executable instructions has been loaded into local memory from a storage device and has been accessed from the memory, determine whether the second executable instructions of the memory page have been modified thereby changing the memory page into a modified memory page; and

in response to the second executable instructions of the modified memory page having been modified, trigger a client routine to perform anti-malware analysis of at least a portion of the modified memory page before the modified memory page is written back to the storage device.

19. The programmable device of claim 18 , wherein the processor is to determine whether the second executable instructions of the memory page have been modified by examining a page table entry maintained by the processor.

20. The programmable device of claim 18 , wherein the processor is to:

determine whether the second executable instructions have been whitelisted or have been generated by a whitelisted module; and

ignore the modified memory page when the second executable instructions have been whitelisted.

21. The programmable device of claim 18 , wherein the processor is to:

determine whether the second executable instructions of the modified memory page have changed since a previous analysis of the modified memory page; and

ignore the modified memory page when the second executable instructions of the modified memory page have not changed since the previous analysis of the modified memory page.

22. The programmable device of claim 21 , wherein the processor is to determine whether the second executable instructions of the modified memory page have changed by:

calculating a hash of the modified memory page;

determining whether the hash is in a hash table of previously examined memory pages; and

determining that the second executable instructions of the modified memory page have not changed when the hash is in the hash table.

23. The programmable device of claim 18 , wherein the processor is to execute a first routine at a first priority to determine whether the second executable instructions of the memory page have been modified, and to execute a second routine at a second priority to queue a trigger object to trigger the client routine, the second priority lower than the first priority.

24. The programmable device of claim 23 , wherein the processor is to queue the trigger object on a trigger queue maintained by a kernel of an operating system associated with the processor.

25. The programmable device of claim 18 , wherein the second executable instructions include call or jump instructions.

Assignments (10)
CORRECTIVE ASSIGNMENT TO CORRECT THE THE PATENT TITLES AND REMOVE DUPLICATES IN THE SCHEDULE PREVIOUSLY RECORDED AT REEL: 059354 FRAME: 0335. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jun 23, 2022
From: MCAFEE, LLC
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 060792/0307 →
SECURITY INTEREST Recorded Mar 3, 2022
From: MCAFEE, LLC
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT AND COLLATERAL AGENT
Reel/Frame 059354/0335 →
RELEASE OF INTELLECTUAL PROPERTY COLLATERAL - REEL/FRAME 045056/0676 Recorded Mar 2, 2022
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: MCAFEE, LLC
Reel/Frame 059354/0213 →
RELEASE OF INTELLECTUAL PROPERTY COLLATERAL - REEL/FRAME 045055/0786 Recorded Oct 26, 2020
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: MCAFEE, LLC
Reel/Frame 054238/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENT 6336186 PREVIOUSLY RECORDED ON REEL 045056 FRAME 0676. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Oct 22, 2020
From: MCAFEE, LLC
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 054206/0593 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENT 6336186 PREVIOUSLY RECORDED ON REEL 045055 FRAME 786. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Oct 22, 2020
From: MCAFEE, LLC
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 055854/0047 →
SECURITY INTEREST Recorded Jan 12, 2018
From: MCAFEE, LLC
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 045056/0676 →
SECURITY INTEREST Recorded Jan 12, 2018
From: MCAFEE, LLC
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 045055/0786 →
CHANGE OF NAME AND ENTITY CONVERSION Recorded Sep 15, 2017
From: MCAFEE, INC.
To: MCAFEE, LLC
Reel/Frame 043969/0057 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 28, 2017
From: SAMBANDAM, VENKATA RAMANAN; WOODWARD, CARL D.; RUBAKHA, DMITRI; GROBMAN, STEVEN L.
To: MCAFEE, INC.
Reel/Frame 041394/0061 →
Continuity (1)
Related Publication 20180183814A1 · Jun 28, 2018
Cited By (1)
US 12,254,090