IP Library Granted Patent US 12,530,501
Granted Patent B1
US 12,530,501 · App. 18/462,023 · Granted Jan 20, 2026

Java virtual machine runtime data obfuscation

Inventors: Zhuo Li (Hangzhou, CN); Kang Qiu (Hangzhou, CN); Jingjin Xie (Hangzhou, CN); Tingming Zou (Hangzhou, CN)
Assignee: Zoom Communications, Inc.
G06F21/6281G06F9/44521G06F9/45558G06F2009/4557
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,530,501
App. No.
18/462,023
Granted
Jan 20, 2026
Kind
B1
Abstract

A heap dump of a running application is obtained. For each object of one or more objects in the heap dump, the object may be obfuscated based on its class loader. A class loader of a class of the object is identified. A determination is made as to whether the class loader is of an application-specific class loader type. In response to determining that the class loader is of the application-specific class loader type, the object is obfuscated. The class loader is of an application-specific class loader type if is an application class loader or a custom class loader.

Claims (57)

1 . A method, comprising:

obtaining a heap dump of a running application, wherein the heap dump is a snapshot of at least a portion of a heap at a particular point in time, and wherein the heap represents runtime data of the running application; and

for each object of one or more objects in the heap dump, wherein the each object includes data values stored in fields of the each object:

identifying a class loader of a class of the each object based on class loader information in the heap dump;

determining whether the class loader is of an application-specific class loader type;

in response to determining that the class loader is of the application-specific class loader type, obfuscating the each object; and

in response to determining that the class loader is not of the application-specific class loader type, obfuscating the each object in response to a determination that the each object is referenced by another object whose class loader is of the application-specific class loader type.

2 . The method of claim 1 , wherein determining whether the class loader is of the application-specific class loader type comprises:

determining that the class loader is an application class loader.

3 . The method of claim 1 , wherein determining whether the class loader is of the application-specific class loader type comprises:

determining that the class loader is a custom class loader.

4 . The method of claim 1 , wherein obfuscating the each object comprises:

obfuscating a data value of a field of the each object based on a data type of the field.

5 . The method of claim 1 , wherein the each object includes a field of type String and having an original value, and wherein obfuscating the each object comprises:

obtaining an obfuscated field by replacing each byte of the field with a pre-defined character such that the obfuscated field has a same length as a length of the original value.

6 . The method of claim 1 , wherein the each object includes a field of type Map, and wherein obfuscating the each object comprises:

hashing each key and each value of the field.

7 . The method of claim 1 , wherein obfuscating the each object comprises:

setting a field of type Date to a random long value having a same length as an original time value of the field.

8 . The method of claim 1 , wherein obfuscating the each object comprises:

traversing all non-static fields of the each object and obfuscating the non-static fields based on corresponding data types.

9 . The method of claim 1 , wherein obfuscating the each object comprises:

for a field of a primitive data type, setting the field to a predefined value; and

for a field of a wrapper data type, setting a value of the field to a different predefined value.

10 . A system, comprising:

one or more memories; and

one or more processors, the one or more processors configured to execute instructions stored in the one or more memories to:

obtain a heap dump of a running application, wherein the heap dump is a snapshot of at least a portion of a heap at a particular point in time, and wherein the heap represents runtime data of the running application; and

for each object of one or more objects in the heap dump, wherein the each object includes data values stored in fields of the each object:

identify a class loader of a class of the each object based on class loader information in the heap dump;

determine whether the class loader is of an application-specific class loader type;

in response to determining that the class loader is of the application-specific class loader type, obfuscate the each object; and

in response to determining that the class loader is not of the application-specific class loader type, obfuscate the each object in response to a determination that the each object is referenced by another object whose class loader is of the application-specific class loader type.

11 . The system of claim 10 , wherein the class loader is determined to be an application class loader.

12 . The system of claim 10 , wherein the class loader is determined to be a custom class loader.

13 . The system of claim 10 , wherein to obfuscate the each object comprises to:

delegating obfuscating a data value of a field of the each object based on a data type of the field.

14 . The system of claim 10 , wherein the each object includes a field of type String and having an original value, and wherein to obfuscate the each object comprises:

setting the field to a random string having a same length as a length of the original value.

15 . The system of claim 10 , wherein the each object includes a field of type Map, and wherein to obfuscate the each object comprises to:

set a key of the field to a hashed value of the key; and

set a value of the field to hash value of the value.

16 . A non-transitory computer readable medium storing instructions operable to cause one or more processors to perform operations comprising:

obtaining a heap dump of a running application, wherein the heap dump is a snapshot of at least a portion of a heap at a particular point in time, and wherein the heap represents runtime data of the running application; and

for each object of one or more objects in the heap dump, wherein the each object includes data values stored in fields of the each object:

identifying a class loader of a class of the each object based on class loader information in the heap dump;

determining whether the class loader is of an application-specific class loader type;

in response to determining that the class loader is of the application-specific class loader type, obfuscating the each object; and

in response to determining that the class loader is not of the application-specific class loader type, obfuscating the each object in response to a determination that the each object is referenced by another object whose class loader is of the application-specific class loader type.

17 . The non-transitory computer readable medium of claim 16 , wherein

determining whether the class loader is of the application-specific class loader type comprises:

determining that the class loader is an application class loader or a custom class loader.

18 . The non-transitory computer readable medium of claim 16 , wherein a data value of a field of the each object is obfuscated based on a data type of the field.

19 . The non-transitory computer readable medium of claim 16 , wherein the each object includes a field of type String and having an original value, and wherein obfuscating the each object comprises:

setting the field to a random string that has a same length as a length of the original value.

20 . The non-transitory computer readable medium of claim 16 , wherein the each object includes a field of type Map, and wherein obfuscating the each object comprises:

obfuscating a key and a value of the fields by setting the key and the value to respective hashed values.

Assignments (2)
CHANGE OF NAME Recorded Jan 7, 2025
From: ZOOM VIDEO COMMUNICATIONS, INC.
To: ZOOM COMMUNICATIONS, INC.
Reel/Frame 069839/0593 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 7, 2023
From: LI, ZHUO; QIU, KANG; XIE, JINGJIN; ZOU, TINGMING
To: ZOOM VIDEO COMMUNICATIONS, INC.
Reel/Frame 064823/0363 →
References Cited (23)
US 20080127156A1 · Buza · 2008 [cited by examiner]
US 20100306854A1 · Neergaard · 2010 [cited by examiner]
US 20110153689A1 · Hall · 2011 [cited by examiner]
US 20130152064A1 · Gagliardi · 2013 [cited by examiner]
US 20160132343A1 · Kajigaya · 2016 [cited by examiner]
US 20160232187A1 · Aoki · 2016 [cited by applicant]
US 20170351847A1 · Zvenigorodsky · 2017 [cited by examiner]
US 20180157764A1 · Longo · 2018 [cited by examiner]
US 20180357008A1 · Hirt · 2018 [cited by examiner]
US 20210191745A1 · Pacht · 2021 [cited by examiner]
US 20230078607A1 · Fong · 2023 [cited by examiner]
CN 108170433A · 2018 [cited by examiner]
CN 114722359A · 2022 [cited by examiner]
WO WO2020248512A1 · 2020 [cited by examiner]
GitHub, PayPal, Heap-dump-tool, Tool to sanitize data from Java heap dumps., https://github.com/paypal/heap-dump-tool, Jun. 15, 2023, 6 pages. [cited by applicant]
GitHub, PayPal, heap-dump-tool, Java Heap Dump Sanitizer, https://github.com/paypal/heap-dump-tool/blob/statics/whitepaper.pdf, Myo Ohn, Jun. 2020, 7 pages. [cited by applicant]
The Security Vault, Heap Inspection, https://thesecurityvault.com/heap-inspection/, Luisfontes19, Jun. 16, 2019, 11 pages. [cited by applicant]
CrashDocs, Mask sensitive heap data, https://docs.ycrash.io/ycrash-server/administration/mask-sensitive-heap-data.html, Sep. 2023, 2 pages. [cited by applicant]
Geeks for Geeks, Different Ways to Capture Java Heap Dumps, https://www.geeksforgeeks.org/different-ways-to-capture-java-heap-dumps/, Akashpandit1103, Apr. 21, 2021, 11 pages. [cited by applicant]
Open JDK, HPROF Agent, https://hg.openjdk.org/jdk6/jdk6/jdk/raw-file/tip/src/share/demo/jvmti/hprof/manual.html, Sep. 2023, 11 pages. [cited by applicant]
Oracle, HPROF: A Heap/CPU Profiling Tool, https://docs.oracle.com/javase/8/docs/technotes/samples/hprof.html, Sep. 2023, 6 pages. [cited by applicant]
Geeks for Geets, ClassLoader in Java, https://www.geeksforgeeks.org/classloader-in-java/, Dannanamanoj, Dec. 5, 2022, 9 pages. [cited by applicant]
DigitalOcean, Java Heap Space vs Stack—Memory Allocation in Java, https://www.digitalocean.com/community/tutorials/java-heap-space-vs-stack-memory#heap-and-stack-memory-in-java-program, Pankaj, Aug. 3, 2022, 13 pages. [cited by applicant]