IP Library Granted Patent US 12,339,786
Granted Patent B2
US 12,339,786 · App. 18/081,149 · Granted Jun 24, 2025

Techniques for generating unique identifiers for tracking process activity

Inventors: Martin Kelly (Bothell, WA); Marco Vedovati (Albino, IT); Igor Polevoy (San Jose, CA); Milos Petrbok (Redmond, WA); Christopher White (Avon, NY)
Assignee: CrowdStrike, Inc.
G06F12/1009G06F1/14G06F9/544
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,339,786
App. No.
18/081,149
Granted
Jun 24, 2025
Kind
B2
Abstract

A method includes retrieving, in a kernel space of an operating system executing on a computing device, a first value from a first clock source, retrieving, in a user space of the operating system executing on the computing device, a second value from a second clock source, generating a unique process identifier (UPID) associated with a process identifier (PID) of a process executing in the operating system, wherein the UPID is based on the first value of the first clock source and the second value of the second clock source, and tracking process activity of the process executing in the operating system by utilizing the UPID.

Claims (60)

1. A method comprising:

retrieving, in a kernel space of an operating system executing on a computing device, a first value from a first clock source;

retrieving, in a user space of the operating system executing on the computing device, a second value from a second clock source, wherein the retrieving the second value of the second clock source is performed periodically;

updating a seed within a seed store based on the second value of the second clock source;

generating, by a processing device, a unique process identifier (UPID) associated with a process identifier (PID) of a process executing in the operating system, wherein the UPID is based on the first value of the first clock source and the second value of the second clock source; and

tracking process activity of the process executing in the operating system by utilizing the UPID.

2. The method of claim 1 , further comprising:

determining if the UPID is present in a least recently used (LRU) map of the operating system; and

responsive to determining that the UPID is present in the LRU map:

retrieving, in the kernel space of the operating system, a third value from the first clock source; and

generating an additional UPID based on the third value of the first clock source and the second value of the second clock source.

3. The method of claim 1 , wherein updating the seed within the seed store based on the second value of the second clock source comprises:

retrieving, in the user space of the operating system, a third value from the second clock source; and

updating the seed within the seed store based on a difference between the second value and the third value from the second clock source.

4. The method of claim 1 , wherein generating the UPID comprises generating a sum of the first value of the first clock source and the seed.

5. The method of claim 1 , wherein the seed store comprises a memory structure shared between the kernel space and the user space of the operating system, and

wherein the UPID is generated by an application extension executing in an extended Berkeley packet filter (eBPF) infrastructure within the operating system of the computing device.

6. The method of claim 1 , further comprising:

retrieving a processing device index from the processing device; and

generating the UPID further based on the processing device index.

7. A system comprising:

a memory; and

a processing device, operatively coupled to the memory, to:

retrieve, in a kernel space of an operating system executing on a computing device, a first value from a first clock source;

retrieve, in a user space of the operating system executing on the computing device, a second value from a second clock source, wherein the retrieval of the second value of the second clock source is performed periodically;

update a seed within a seed store based on the second value of the second clock source;

generate a unique process identifier (UPID) associated with a process identifier (PID) of a process executing in the operating system, wherein the UPID is based on the first value of the first clock source and the second value of the second clock source; and

track process activity of the process executing in the operating system by utilizing the UPID.

8. The system of claim 7 , wherein the processing device is further to:

determine if the UPID is present in a least recently used (LRU) map of the operating system; and

responsive to determining that the UPID is present in the LRU map:

retrieve, in the kernel space of the operating system, a third value from the first clock source; and

generate an additional UPID based on the third value of the first clock source and the second value of the second clock source.

9. The system of claim 7 , wherein to update the seed within the seed store based on the second value of the second clock source the processing device is to:

retrieve, in the user space of the operating system, a third value from the second clock source; and

update the seed within the seed store based on a difference between the second value and the third value from the second clock source.

10. The system of claim 7 , wherein to generate the UPID the processing device is to generate a sum of the first value of the first clock source and the seed.

11. The system of claim 7 , wherein the seed store comprises a memory structure shared between the kernel space and the user space of the operating system, and

wherein the UPID is generated by an application extension executing in an extended Berkeley packet filter (eBPF) infrastructure within the operating system of the computing device.

12. The system of claim 8 , wherein the processing device is further to:

retrieve a processing device index from the processing device; and

generate the UPID further based on the processing device index.

13. A non-transitory computer-readable storage medium including instructions that, when executed by a processing device, cause the processing device to:

retrieve, in a kernel space of an operating system executing on a computing device, a first value from a first clock source;

retrieve, in a user space of the operating system executing on the computing device, a second value from a second clock source, wherein the retrieval of the second value of the second clock source is performed periodically;

update a seed within a seed store based on the second value of the second clock source;

generate a unique process identifier (UPID) associated with a process identifier (PID) of a process executing in the operating system, wherein the UPID is based on the first value of the first clock source and the second value of the second clock source; and

track process activity of the process executing in the operating system by utilizing the UPID.

14. The non-transitory computer-readable storage medium of claim 13 , wherein the instructions further cause the processing device to:

determine if the UPID is present in a least recently used (LRU) map of the operating system; and

responsive to determining that the UPID is present in the LRU map:

retrieve, in the kernel space of the operating system, a third value from the first clock source; and

generate an additional UPID based on the third value of the first clock source and the second value of the second clock source.

15. The non-transitory computer-readable storage medium of claim 13 , wherein to update the seed within the seed store based on the second value of the second clock source the processing device is to:

retrieve, in the user space of the operating system, a third value from the second clock source; and

update the seed within the seed store based on a difference between the second value and the third value from the second clock source.

16. The non-transitory computer-readable storage medium of claim 13 , wherein to generate the UPID the processing device is to generate a sum of the first value of the first clock source and the seed.

17. The non-transitory computer-readable storage medium of claim 13 , wherein the instructions further cause the processing device to:

retrieve a processing device index from the processing device; and

generate the UPID further based on the processing device index.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 14, 2022
From: KELLY, MARTIN; VEDOVATI, MARCO; POLEVOY, IGOR; PETRBOK, MILOS; WHITE, CHRISTOPHER
To: CROWDSTRIKE, INC.
Reel/Frame 062090/0968 →
Continuity (1)
Related Publication 20240202134A1 · Jun 20, 2024
References Cited (6)
US 11675897B2 · Regner · 2023 [cited by examiner]
US 11709720B1 · Fournier · 2023 [cited by examiner]
US 20080209249A1 · Tso · 2008 [cited by examiner]
US 20190370360A1 · Mainali · 2019 [cited by examiner]
US 20200366571A1 · Vittal · 2020 [cited by examiner]
US 20230259156A1 · Jong · 2023 [cited by examiner]