IP Library Granted Patent US 9,779,251
Granted Patent B2
US 9,779,251 · App. 14/925,464 · Granted Oct 3, 2017

System, method, and computer program product for monitoring an execution flow of a function

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,779,251
App. No.
14/925,464
Granted
Oct 3, 2017
Kind
B2
Abstract

A system, method, and computer program product are provided for monitoring an execution flow of a function. In use, data associated with a function is identified within a call stack. Additionally, a call stack frame is determined from freed memory in the call stack. Further, an execution flow of the function is monitored, utilizing the call stack frame from the freed memory.

Claims (52)

1. One or more non-transitory computer readable media comprising instructions for monitoring an execution flow of a function stored thereon that when executed cause a programmable device to:

identify data associated with a function within a call stack during execution of the function by the programmable device;

examine an area of memory outside the call stack during execution of the function;

determine a former call stack frame from the area of memory outside the call stack, wherein the former call stack frame includes memory that was previously popped off the call stack; and

determine whether the former call stack frame has been compromised.

2. The one or more non-transitory computer readable media of claim 1 , wherein the instructions that when executed cause the programmable device to determine whether the former call stack frame has been compromised comprise instructions that when executed cause the programmable device to:

determine whether the former call stack frame has been overwritten by a second call stack entry subsequent to a first call stack entry in the former call stack frame.

3. The one or more non-transitory computer readable media of claim 1 , wherein the instructions further comprise instructions that when executed cause the programmable device to:

monitor the former call stack frame if the former call stack frame has not been compromised.

4. The one or more non-transitory computer readable media of claim 1 , wherein the instructions further comprise instructions that when executed cause the programmable device to:

not monitor the former call stack frame if the former call stack frame has been compromised.

5. The one or more non-transitory computer readable media of claim 1 , wherein the instructions that when executed cause the programmable device to determine whether the former call stack frame has been compromised comprise instructions that when executed cause the programmable device to:

examine code associated with the former call stack frame.

6. The one or more non-transitory computer readable media of claim 5 , wherein the instructions that when executed cause the programmable device to examine code associated with the former call stack frame comprise instructions that when executed cause the programmable device to:

examine code preceding a return address in the former call stack frame.

7. The one or more non-transitory computer readable media of claim 1 , wherein the instructions that when executed cause the programmable device to determine whether the former call stack frame has been compromised comprise instructions that when executed cause the programmable device to:

determine a level of confidence associated with the former call stack frame.

8. The one or more non-transitory computer readable media of claim 7 , wherein the instructions that when executed cause the programmable device to determine a level of confidence associated with the former call stack frame comprise instructions that when executed cause the programmable device to:

determine whether the former call stack frame has been compromised based on the level of confidence.

9. A method for monitoring an execution flow of a function, comprising:

identifying data associated with a function within a call stack during execution of the function by a programmable device;

examining an area of memory outside the call stack during execution of the function;

determining a former call stack frame from the area of memory outside the call stack, wherein the former call stack frame includes memory that previously held an active call stack entry; and

determining whether the former call stack frame has been compromised.

10. The method of claim 9 , further comprising:

monitoring the former call stack frame.

11. The method of claim 10 , wherein monitoring the former call stack frame comprises:

monitoring the former call stack frame unless the former call stack frame has been compromised.

12. The method of claim 9 , wherein determining whether the former call stack frame has been compromised comprises:

examining code preceding a return address in the former call stack frame.

13. The method of claim 9 , wherein determining whether the former call stack frame has been compromised comprises:

determining whether the former call stack frame has been overwritten by a second call stack entry subsequent to a first call stack entry in the former call stack frame.

14. The method of claim 9 , wherein determining whether the former call stack frame has been compromised comprises:

determining whether the former call stack frame has been compromised based on a level of confidence associated with the former call stack frame.

15. A system, comprising:

a processor; and

a non-transitory computer readable medium comprising instructions for monitoring an execution flow of a function stored thereon that when executed configure the processor to:

identify data associated with a function within a call stack during execution of the function by the processor,

examine an area of memory outside the call stack during execution of the function;

determine a former call stack frame from the area of memory outside the call stack, wherein the former call stack frame includes memory that previously held an active stack entry, and

determine whether the former call stack frame has been compromised.

16. The system of claim 15 , wherein the instructions that when executed cause the processor to determine whether the former call stack frame has been compromised comprise instructions that when executed cause the processor to:

determine whether the former call stack frame has been overwritten by a second call stack entry subsequent to a first call stack entry in the former call stack frame.

17. The system of claim 15 , wherein the instructions further comprise instructions that when executed cause the processor to:

monitor the former call stack frame if the former call stack frame has not been compromised.

18. The system of claim 15 , wherein the instructions that when executed cause the processor to determine whether the former call stack frame has been compromised comprise instructions that when executed cause the processor to:

examine code associated with the former call stack frame.

19. The system of claim 18 , wherein the instructions that when executed cause the processor to examine code associated with the former call stack frame comprise instructions that when executed cause the processor to:

examine code preceding a return address in the former call stack frame.

20. The system of claim 15 , wherein the instructions that when executed cause the processor to determine whether the former call stack frame has been compromised comprise instructions that when executed cause the processor to:

determine a level of confidence associated with the former call stack frame; and

determine whether the former call stack frame has been compromised based on the level of confidence.

Assignments (9)
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: JPMORGAN CHASE BANK, N.A.
Reel/Frame 045055/0786 →
SECURITY INTEREST Recorded Jan 12, 2018
From: MCAFEE, LLC
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 045056/0676 →
CHANGE OF NAME AND ENTITY CONVERSION Recorded Aug 24, 2017
From: MCAFEE, INC.
To: MCAFEE, LLC
Reel/Frame 043665/0918 →