IP Library Granted Patent US 12,737,280
Granted Patent B2
US 12,737,280 · App. 18/635,419 · Granted Sep 15, 2026

Identifying active code sections via memory forensics

Inventors: Eran Segal (Ganei Tikva, IL); Moshe Siman Tov Bustan (Holon, IL); Pavel Furman (Netanya, IL); Idan Bartura (Herzliya, IL); Aviv Mussinger (Tel Aviv, IL)
Assignee: Kodem Security Ltd.
G06F11/3636G06F11/302G06F11/3037G06F11/3644G06Q10/0875
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 12,737,280
App. No.
18/635,419
Filed
Apr 15, 2024
Granted
Sep 15, 2026
Kind
B2
Examiner
LUU, CUONG V
Art Unit
2192
USPC
717/124
Abstract

A system of identifying an executed code section of a software process, having a processing circuitry (PC) configured to: a) access a memory space of a first process executing in an operating environment; b) identify, from contents of the memory space, a software framework of the first process; c) find, in the memory space, based on the identified software framework, a first code section description structure; d) identify, from the first code section description structure, a code section execution indicator (CSEI) associated with a first code section; and e) determine, based on a value of the CSEI, whether the first code section has been executed.

Claims (58)

1 . A system of identifying an executed code section of a software process, the system comprising a processing circuitry (PC) configured to:

a. access a memory space of a first process executing in an operating environment;

b. identify, from contents of the memory space, a software framework of the first process;

c. find, in the memory space, based on the software framework, a first code section description structure;

d. identify, from the first code section description structure, a code section execution indicator (CSEI) associated with a first code section; and

e. determine, based on a value of the CSEI, whether the first code section has been executed.

2 . The system of claim 1 , wherein the PC is additionally configured to:

f. add, to a software runtime bill-of-materials (RBOM), a code section identifier of the first code section, the code section identifier being based on the first code section description structure.

3 . The system of claim 2 , wherein the PC is additionally configured to:

g. repeat c.-f. for one or more additional code section description structures.

4 . The system of claim 3 , wherein the PC is additionally configured to:

h. responsive to an event, repeat a.-g. for one or more additional iterations.

5 . The system of claim 3 , wherein the PC is additionally configured to:

repeat a.-g. for one or more additional processes executing in the operating environment.

6 . The system of claim 4 , wherein the event is an expiration of a delay.

7 . The system of claim 1 , wherein the PC is additionally configured to, subsequent to e.:

identify, in the memory space, based on the identified software framework, an unloaded code section log structure;

determine, based on identifying one or more code section identifiers in the unloaded code section log structure, that respective code sections have been executed.

8 . The system of claim 7 , wherein the PC is additionally configured to:

adding the one or more code section identifiers to the RBOM.

9 . The system of claim 2 , wherein the code section identifier is selected from the group consisting of:

a. a module name,

b. a module path,

c. a file path,

d. a class name,

e. a function name,

f. a function signature,

g. a method name,

h. a method signature,

i. a namespace,

j. a scope,

k. a file name,

I. a file name with a starting line number, and

m. a file name with a starting line number and ending line number.

10 . The system of claim 1 , wherein the CSEI is based on at least one of the group consisting of:

a. a value of a pointer, identified from the code section description structure, to data or instructions of the first code section;

b. contents of a memory address, the memory address is written to by the first code section;

c. a value of a data field, identified from the code section description structure, indicative of whether code of the first code section has been cached;

d. a value of a data field, identified from the code section description structure, indicative of whether a data object associated with the first code section has been cached;

e. a value of a data field, identified from the code section description structure, utilized by a virtual machine for code use profiling; and

f. a value of a data field, identified from the code section description structure, indicating a count of invocations of the first code section.

11 . The system of claim 7 , wherein the software framework is Java and the unloaded code section log structure is UnloadingEventLog.

12 . The system of claim 10 , wherein the PC is configured to, responsive to determining that the software framework is Java, utilize a methodCounters field of a Methods structure as the CSEI.

13 . The system of claim 10 , wherein the PC is configured to, responsive to determining that the software framework is node.js, utilize a function data field of a SharedFunctionInfo structure as the CSEI.

14 . The system of claim 10 , wherein the PC is configured to, responsive to determining that the software framework is Ruby, utilize a flags field of a rb_method_entry_t structure as the CSEI.

15 . The system of claim 10 , wherein the PC is configured to, responsive to determining that the software framework is Ruby, utilize a total_calls field of a rb_iseq_constant_body structure as the CSEI.

16 . A processing circuitry-based method of identifying an executed code section of a software process, the method comprising:

a. accessing a memory space of a first process executing in an operating environment;

b. identifying, from contents of the memory space, a software framework of the first process;

c. finding, in the memory space, based on the software framework, a first code section description structure;

d. identifying, from the first code section description structure, a code section execution indicator (CSEI) associated with a first code section; and

e. determining, based on a value of the CSEI, whether the first code section has been executed.

17 . A computer program product comprising a non-transitory computer readable storage medium containing program instructions, which when read by a processor, cause the processor to perform a method of identifying an executed code section of a software process, the method comprising:

a. accessing a memory space of a first process executing in an operating environment;

b. identifying, from contents of the memory space, a software framework of the first process;

c. finding, in the memory space, based on the software framework, a first code section description structure;

d. identifying, from the first code section description structure, a code section execution indicator (CSEI) associated with a first code section; and

e. determining, based on a value of the CSEI, whether the first code section has been executed.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 28, 2024
From: SEGAL, ERAN; SIMAN TOV BUSTAN, MOSHE; FURMAN, PAVEL; BARTURA, IDAN; MUSSINGER, AVIV
To: KODEM SECURITY LTD.
Reel/Frame 067867/0283 →
Continuity (1)
Related Publication 20250321861A1 · Oct 16, 2025
References Cited (25)
US 7716647B2 · Loh et al. · 2010 [cited by applicant]
US 8478948B2 · Panchenko et al. · 2013 [cited by applicant]
US 11550903B1 · Epstein · 2023 [cited by applicant]
US 11989572B2 · Furman et al. · 2024 [cited by applicant]
US 20050138013A1 · Walker · 2005 [cited by applicant]
US 20050210454A1 · DeWitt, Jr. et al. · 2005 [cited by applicant]
US 20060036579A1 · Byrd et al. · 2006 [cited by applicant]
US 20060294355A1 · Zimmer · 2006 [cited by applicant]
US 20130246451A1 · Kaiser · 2013 [cited by applicant]
US 20160103612A1 · Christodorescu · 2016 [cited by examiner]
US 20160357958A1 · Guidry · 2016 [cited by applicant]
US 20190303815A1 · Li · 2019 [cited by applicant]
US 20230040382A1 · Tokura et al. · 2023 [cited by applicant]
US 20230044935A1 · Madineni et al. · 2023 [cited by applicant]
US 20230367880A1 · Sudhakar et al. · 2023 [cited by applicant]
US 20240020140A1 · Furman et al. · 2024 [cited by applicant]
CN 110737892A · 2020 [cited by examiner]
EP 3009935A1 · 2016 [cited by applicant]
Amin Firoozshahian; A Memory System Design Framework: Creating Smart Memories; ACM; pp. 406-417; retrieved on Feb. 19, 2026 (Year: 2009). [cited by examiner]
Zhongxing Xu; A Memory Model for Static Analysis of C Programs; Springer; pp. 535-548; retrieved on Feb. 19, 2026 (Year: 2010). [cited by examiner]
EclEmma 3.1.9, Java Code Coverage for Eclipse, pp. 1-2, downloaded from https://www.jacoco.org (Jul. 10, 2024). [cited by applicant]
Memory Analyzer (MAT), Eclipse Memory Analyzer Open Source Project_The Eclipse Foundation, pp. 1-2, downloaded from http://www.eclipse.org/ (Jul. 10, 2024). [cited by applicant]
GitHub—volatilityfoundation/volatility: An advanced memory forensics framework, pp. 1-12, downloaded from https://github.com/volatilityfoundation/volatility (Jul. 10, 2024). [cited by applicant]
Off-CPU Analysis, pp. 1-14, downloaded from https://www.brendangregg.com/offcpuanalysis.html (Jul. 10, 2024). [cited by applicant]
Arash Shahkar, On Matching Binary to Source Code, The Department of Concordia Institute for Information Systems Engineering, pp. 1-99 (2016). [cited by applicant]