IP Library Granted Patent US 11,151,251
Granted Patent B2
US 11,151,251 · App. 15/648,887 · Granted Oct 19, 2021

System and method for validating in-memory integrity of executable files to identify malicious activity

Inventor: Joseph W. Desimone (Hanover, MD)
Assignee: Endgame, Inc.
G06F21/566G06F9/544G06F21/552G06F21/565H04L63/145H04L63/1416H04L63/1441
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 11,151,251
App. No.
15/648,887
Granted
Oct 19, 2021
Kind
B2
Abstract

A malicious code detection module identifies potentially malicious instructions in volatile memory of a computing device before the instructions are executed. The malicious code detection module identifies an executable file, including an .exe file, in memory, validates one or more components of the executable file against the same file stored in non-volatile storage, and issues an alert if the validation fails.

Claims (62)

1. A method of validating an executable file to identify potential malware in a computing device comprising a processor, memory, non-volatile storage, an operating system, and a malicious code detection module, the method comprising:

identifying, by the malicious code detection module, a first executable file in the memory, the first executable file including:

a first plurality of components that are altered by the operating system when loaded into the memory, and

a second plurality of components that are not altered by the operating system when loaded into the memory;

identifying, by the malicious code detection module, a second executable file in the non-volatile storage, wherein the first executable file and the second executable file are associated with one another by the operating system;

determining that the second executable file has been compressed and/or encrypted using software packing;

determining whether the second executable file is capable of being unpacked;

unpacking the second executable file when the second executable file is capable of being unpacked;

comparing, by the malicious code detection module, a size of a first component of the second plurality of components of the first executable file and a size of a first component of a second plurality of components of the second executable file,

wherein comparing includes accounting for changes to the second executable file caused by the unpacking of the second executable file, and further wherein when the second executable file has not been compressed and/or encrypted using software packing, the changes need not be accounted for; and

generating an alert when the size of the first component of the second plurality of components of the first executable file and the size of the first component of the second plurality of components of the second executable file are different in terms of a number of bytes and bit-by-bit comparison,

wherein the first component of the second plurality of components of the first executable file is less than the entirety of the first executable file and the first component of the second plurality of components of the second executable file is less than the entirety of the second executable file.

2. The method of claim 1 , further comprising:

comparing, by the malicious code detection module, the content of the first component of the second plurality of components of the first executable file and the content of the first component of the second plurality of components of the second executable file; and

generating an alert when the content of the first component of the second plurality of components of the first executable file and the content of the first component of the second plurality of components of the second executable file are different.

3. The method of claim 2 , further comprising:

comparing, by the malicious code detection module, a size of a second component of the second plurality of components of the first executable file and a size of a second component of the second plurality of components of the second executable file; and

generating an alert when the size of the second component of the second plurality of components of the first executable file and the size of the second component of the second plurality of components of the second executable file are different, wherein the second component of the first executable file is less than the entirety of the first executable file and the second component of the second executable file is less than the entirety of the second executable file.

4. The method of claim 3 , further comprising:

comparing, by the malicious code detection module, the content of the second component of the second plurality of components of the first executable file and the content of the second component of the second plurality of components of the second executable file; and

generating an alert when the content of the second component of the second plurality of components of the first executable file and the content of the second component of the second plurality of components of the second executable file are different.

5. The method of claim 1 , wherein the first executable file is a portable executable file and the second executable file is a portable executable file.

6. The method of claim 2 , wherein the first executable file is a portable executable file and the second executable file is a portable executable file.

7. The method of claim 3 , wherein the first executable file is a portable executable file and the second executable file is a portable executable file.

8. The method of claim 4 , wherein the first executable file is a portable executable file and the second executable file is a portable executable file.

9. The method of claim 5 , wherein the first component of the second plurality of components of the first executable file is a DOS header and the first component of the second plurality of components of the second executable file is a DOS header.

10. The method of claim 3 , wherein the second component of the second plurality of components of the first executable file is a set of code and the second component of the second plurality of components of the second executable file is a set of code.

11. A computing device comprising:

a processor;

memory;

a non-volatile storage device;

an operating system; and

a malicious code detection module stored in the memory and executed by the processor, the malicious code detection module comprising instructions for:

identifying a first executable file in the memory, the first executable file including:

a first plurality of components that are altered by the operating system when loaded into the memory, and

a second plurality of components that are not altered by the operating system when loaded into the memory;

identifying a second executable file in the non-volatile storage device, wherein the first executable file is associated with the second executable file by the operating system;

determining that the second executable file has been compressed and/or encrypted using software packing;

determining whether the second executable file is capable of being unpacked;

unpacking the second executable file when the second executable file is capable of being unpacked;

comparing a size of a first component of the second plurality of components of the first executable file and a size of a first component of a second plurality of components of the second executable file,

wherein comparing includes accounting for changes to the second executable file caused by the unpacking of the second executable file, and further wherein when the second executable file has not been compressed and/or encrypted using software packing, the changes need not be accounted for;

identifying permissible modifications to the first executable file based on execution of the first executable file; and

generating an alert if the size of the first component of the second plurality of components of the first executable file and the size of the first component of the second plurality of components of the second executable file are different in terms of a number of bytes and bit-by-bit comparison,

wherein the alert is not triggered when the difference relates to the permissible modifications, and wherein the first component of the second plurality of components of the first executable file is less than the entirety of the first executable file and the first component of the second plurality of components of the second executable file is less than the entirety of the second executable file.

12. The device of claim 11 , wherein the malicious code detection module further comprises instructions for:

comparing the content of the first component of the second plurality of components of the first executable file and the content of the first component of the second plurality of components of the second executable file; and

generating an alert when the content of the first component of the second plurality of components of the first executable file and the content of the first component of the second plurality of components of the second executable file are different.

13. The device of claim 12 , wherein the malicious code detection module further comprises instructions for:

comparing a size of a second component of the second plurality of components of the first executable file and a size of a second component of the second plurality of components of the second executable file; and

generating an alert if the size of the second component of the second plurality of components of the first executable file and the size of the second component of the second plurality of components of the second executable file are different, wherein the second component of the first executable file is less than the entirety of the first executable file and the second component of the second executable file is less than the entirety of the second executable file.

14. The device of claim 12 , wherein the malicious code detection module further comprises instructions for:

comparing, by the malicious code detection module, the content of the second component of the second plurality of components of the first executable file and the content of the second component of the second plurality of components of the second executable file; and

generating an alert when the content of the second component of the second plurality of components of the first executable file and the content of the second component of the second plurality of components of the second executable file are different.

15. The device of claim 11 , wherein the first executable file is a portable executable file and the second executable file is a portable executable file.

16. The device of claim 12 , wherein the first executable file is a portable executable file and the second executable file is a portable executable file.

17. The device of claim 13 , wherein the first executable file is a portable executable file and the second executable file is a portable executable file.

18. The device of claim 13 , further comprising resolving changes to an import address table for the first executable file.

19. The device of claim 15 , wherein the first component of the second plurality of components of the first executable file is a DOS header and the first component of the second plurality of components of the second executable file is a DOS header.

20. The device of claim 14 , wherein the second component of the second plurality of components of the first executable file is a set of code and the second component of the second plurality of components of the second executable file is a set of code.

21. The method of claim 1 , the method further comprising: decrypting at least one second plurality of components when loading into the memory, wherein at least one of the second plurality of components is encrypted.

22. The method of claim 1 , the method further comprising: decompressing at least one second plurality of components when loading into the memory, wherein at least one of the second plurality of components is compressed.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2026
From: ELASTICSEARCH, INC.
To: ELASTICSEARCH TECHNOLOGIES (US) INC.
Reel/Frame 073810/0013 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2026
From: ENDGAME SYSTEMS, INC.
To: ELASTICSEARCH, INC.
Reel/Frame 073810/0057 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 14, 2017
From: DESIMONE, JOSEPH
To: ENDGAME, INC.
Reel/Frame 043008/0096 →
Continuity (1)
Related Publication 20190018962A1 · Jan 17, 2019