IP Library Granted Patent US 9,910,983
Granted Patent B2
US 9,910,983 · App. 14/765,698 · Granted Mar 6, 2018

Malware detection

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,910,983
App. No.
14/765,698
Granted
Mar 6, 2018
Kind
B2
Abstract

A method of detecting suspicious code that has been injected into a process. The method includes identifying suspicious executable memory areas assigned to the process and, for each thread in the process, inspecting a stack associated with the thread to identify a potential return address; determining whether or not the potential return address is located within a suspicious memory area; and, if the potential return address is located within a suspicious memory area, determining whether or not the instruction at the address preceding the potential return address is a function call and, if yes, determining that the potential return address is a true return address and identifying the thread and associated code as suspicious.

Claims (35)

1. A method of detecting suspicious code that has been injected into a process being run on a computer system, the method comprising:

identifying suspicious executable memory areas assigned to the process and, for each thread in the process,

inspecting a stack associated with the thread to identify a potential return address;

determining whether or not the potential return address is located within a suspicious memory area; and

in response to the potential return address being located within the suspicious memory area, determining whether or not an instruction at the address preceding the potential return address is a function call and, if yes, determining that the potential return address is a true return address and identifying the thread and associated code as suspicious, wherein the identifying suspicious executable memory areas comprises collecting a first list of memory areas that contain modules that have been loaded to the process and then collecting a second list of all memory areas for the process that are executable but not in the first list, the entries in the second list corresponding to identified suspicious memory area, and wherein the collecting the second list containing suspicious memory areas comprises collecting a list of all executable memory areas for the process and removing from that list the memory areas of the modules in the first list.

2. The method as claimed in claim 1 , wherein the inspecting the stack associated with the thread to identify a potential return address comprises:

locating a memory area that contains the stack for the thread; and

inspecting the stack in portions of a minimum memory allocation.

3. The method as claimed in claim 1 , further comprising searching the memory areas belonging to any thread found to be running suspicious code for identifiers that provide an indication of which malicious executable has performed the injection into the process.

4. An apparatus comprising:

at least one processor; and

a memory including executable files, where the memory and the executable files are configured, with the at least one processor, to cause the apparatus to perform operations comprising:

identifying suspicious executable memory areas assigned to a process being run on a computer system;

inspecting a stack associated with the thread to identify a potential return address;

determining whether the identified potential return address is located within a suspicious memory area;

determining whether or not an instruction at the address preceding the potential return address is a function call; and

determining that the potential return address is a true return address and that the thread and associated code is suspicious if the instruction at the address preceding the potential return address is a function call, wherein the identifying suspicious executable memory areas comprises collecting a first list of memory areas that contain modules that have been loaded to the process and then collecting a second list of all memory areas for the process that are executable but not in the first list, the entries in the second list corresponding to identified suspicious memory area, and wherein the collecting the second list containing suspicious memory areas comprises collecting a list of all executable memory areas for the process and removing from that list the memory areas of the modules in the first list.

5. The apparatus as claimed in claim 4 , wherein the memory including the executable files is configured with the at least one processor to cause the apparatus to perform operations comprising:

locating a memory area that contains the stack for the thread; and

inspecting the stack in portions of a minimum memory allocation.

6. The apparatus as claimed in claim 5 , wherein the memory including the executable files is configured with the at least one processor to cause the apparatus to perform operations comprising:

inspecting the stack associated with the thread including:

locating the memory area containing the stack for the thread; and

processing the entire memory area containing the stack for the thread to identify a potential return address.

7. The apparatus according to claim 4 , wherein the memory including the executable files is configured with the at least one processor to cause the apparatus to perform operations comprising:

searching the memory areas belonging to any thread found to be running suspicious code for identifiers that provide an indication of which malicious executable has performed the injection into the process.

8. A computer system comprising:

one or more processors; and

one or more computer-readable memories storing computer program code, the one or more processors being configured to execute the computer program code to cause the computer system at least to:

identify suspicious executable memory areas assigned to a process being run on the computer system; and

for each thread in the process,

inspect a stack associated with the thread to identify a potential return address;

determine whether or not the potential return address is located within a suspicious memory area; and

in response to the potential return address being located within the suspicious memory area, determine whether or not an instruction at the address preceding the potential return address is a function call and, if yes, determine that the potential return address is a true return address and identifying the thread and associated code as suspicious, wherein the identifying suspicious executable memory areas comprises collecting a first list of memory areas that contain modules that have been loaded to the process and then collecting a second list of all memory areas for the process that are executable but not in the first list, the entries in the second list corresponding to identified suspicious memory area, and wherein the collecting the second list containing suspicious memory areas comprises collecting a list of all executable memory areas for the process and removing from that list the memory areas of the modules in the first list.

9. The computer system according to claim 8 , wherein the one or more processors are configured to execute the computer program code to further cause the computer system to terminate any threads found to be running suspicious code that has been injected into the process.

Assignments (4)
PATENT SECURITY AGREEMENT Recorded Nov 19, 2024
From: RPX CORPORATION
To: BARINGS FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 069392/0613 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 8, 2024
From: WITHSECURE CORPORATION (FKA F-SECURE CORPORATION)
To: RPX CORPORATION
Reel/Frame 068837/0899 →
CHANGE OF NAME Recorded Jun 7, 2022
From: F-SECURE CORPORATION (A/K/A F-SECURE CORPORATION OYJ)
To: WITHSECURE CORPORATION (A/K/A WITHSECURE OYJ)
Reel/Frame 060302/0275 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 4, 2015
From: SUOMINEN, MIKKO
To: F-SECURE CORPORATION
Reel/Frame 036249/0230 →