IP Library › Granted Patent US 12,625,684
Granted Patent B2
US 12,625,684 · App. 18/378,600 · Granted May 12, 2026

Automatic real user monitoring (RUM) instrumentation

Inventors: Yu-Dan Lin (Shanghai, CN); Bing Zhang (Shanghai, CN); Hao Liu (Shanghai, CN); Jin-Hong Zhang (Shanghai, CN)
Assignee: Micro Focus LLC
G06F8/41
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,625,684
App. No.
18/378,600
Granted
May 12, 2026
Kind
B2
Abstract

Systems and methods are disclosed to develop and use a tool to enable an application package to be instrumented with automatic real user monitoring (RUM) without accessing the original source code. A package, such as Android application bundle (AAB) or Android package kit (APK), is imported and decoded and a generated source code file and/or manifest is obtained. Instrumentation is then added at a location corresponding to a code signature in the generated source code file (e.g., an operation to be instrumented before and/or after the operation). The generated source code file is then compiled and packaged into an APK and/or AAB file. The resulting application package is available for downloading, installation, and use on user devices with the instrumentation having been automatically added and without access to the original source code.

Claims (60)

1 . A method, comprising:

accessing an application package comprising executable application code and a machine-readable manifest;

extracting the machine-readable manifest from the application package;

decoding the machine-readable manifest into an intermediate manifest;

matching a portion of the intermediate manifest to an object signature;

inserting, in the intermediate manifest, instrument code relative to the object signature to produce an instrumented manifest;

encoding the instrumented manifest into an instrumented machine-readable manifest;

extracting the executable application code from the application package;

processing the executable application code to identify an instrumentation signature,

wherein processing the executable application code includes decompiling the executable application code into a generated source code file;

inserting instrumentation code relative to the instrumentation signature to produce instrumented executable application code; and

packaging the instrumented executable application code and the instrumented machine-readable manifest into an instrumented application package.

2 . The method of claim 1 , wherein the executable application code comprises binary Dalvik bytecode (DEX).

3 . The method of claim 1 , wherein the generated source code file comprises Smali text.

4 . The method of claim 1 , further comprising inserting the instrumentation code in at least one of directly before or directly after an instrumentation signature, respectively.

5 . The method of claim 1 , wherein the machine-readable manifest comprises Android layout view (AXML) content.

6 . The method of claim 1 , wherein at least one of the intermediate manifest and the instrumented manifest comprise extensible markup language (XML) instructions.

7 . The method of claim 1 , wherein packaging the instrumented executable application code into the instrumented application package further comprises:

receiving a package type; and

in response to the package type, packaging the instrumented executable application code into the instrumented application package having the package type.

8 . The method of claim 7 , wherein the package type is selected from a group comprising Android application bundle (AAB) or Android package kit (APK).

9 . The method of claim 1 , wherein extracting the executable application code from the application package further comprises extracting at least one of a resource or an asset from the application package.

10 . The method of claim 9 , wherein packaging the instrumented executable application code into the instrumented application package further comprises packaging the at least one of the resource or the asset in the instrumented application package.

11 . A method, comprising:

accessing an application package comprising executable manifest;

extracting the executable manifest from the application package;

decoding the executable manifest into an intermediate manifest;

matching a portion of the intermediate manifest to an object signature;

inserting, in the intermediate manifest, in at least one of before the object signature and after the object signature an instrumentation code to produce an instrumented manifest;

encoding the instrumented manifest into an instrumented machine-readable manifest;

extracting an executable application code from the application package;

decompiling the executable application code into a generated source code file; and

packaging the instrumented machine-readable manifest into an instrumented application package.

12 . The method of claim 11 , wherein the intermediate manifest comprises an Android manifest (AXML).

13 . The method of claim 11 , wherein the instrumented manifest comprises an extensible markup language (XML).

14 . The method of claim 11 , further comprising:

matching a portion of the generated source code file to an instrumentation signature;

inserting, in the generated source code file, in at least one of before the instrumentation signature and after the instrumentation signature, an instrumentation code to produce an instrumented source code;

compiling the instrumented source code into an instrumented executable application code; and

packaging the instrumented executable application code into the instrumented application package.

15 . The method of claim 14 , wherein the executable application code comprises binary Dalvik bytecode (DEX).

16 . The method of claim 14 , wherein packaging the instrumented executable application code into the instrumented application package further comprises:

receiving a package type; and

in response to the package type, packaging the instrumented executable application code into the instrumented application package having the package type.

17 . The method of claim 16 , wherein the package type is selected from a group comprising Android application bundle (AAB) or Android package kit (APK).

18 . The method of claim 11 , wherein the generated source code file comprises Smali text.

19 . A system, comprising:

a data storage maintaining an application package comprising an executable manifest;

a processor coupled to a computer memory and having stored thereon instructions to cause the processor to:

access the application package from the data storage;

extract the executable manifest from the application package;

decode the executable manifest into an intermediate manifest;

match a portion of the intermediate manifest to an object signature;

insert, in the intermediate manifest in at least one of before the object signature and after the object signature, an instrumentation code to produce an instrumented manifest;

encode the instrumented manifest into an instrumented machine-readable manifest;

extract an executable application code from the application package;

decompile the executable application code into a generated source code file;

package the instrumented machine-readable manifest into an instrumented application package; and

store the instrumented application package in the data storage.

20 . The system of claim 19 , wherein the intermediate manifest comprises an Android manifest (AXML) and the instrumented manifest comprises an extensible markup language (XML).

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 10, 2023
From: LIN, YU-DAN; ZHANG, BING; LIU, HAO; ZHANG, JIN-HONG
To: MICRO FOCUS LLC
Reel/Frame 065209/0928 →
Continuity (1)
Related Publication 20250117200A1 · Apr 10, 2025
References Cited (17)
US 6345384B1 · Sato · 2002 [cited by examiner]
US 9727317B2 · Gao · 2017 [cited by examiner]
US 10133557B1 · Tripathi · 2018 [cited by examiner]
US 10223526B2 · Xuan · 2019 [cited by examiner]
US 10956137B2 · Waltenberg · 2021 [cited by examiner]
US 11157250B2 · Bucuvalas · 2021 [cited by examiner]
US 11288177B2 · Balakrishnan · 2022 [cited by examiner]
US 11321080B2 · Ren · 2022 [cited by examiner]
US 12019749B2 · Yerra · 2024 [cited by examiner]
US 12197571B2 · Wildsmith · 2025 [cited by examiner]
US 20150378864A1 · Lensmar · 2015 [cited by examiner]
US 20200226232A1 · Gagnerot · 2020 [cited by examiner]
Cho et al, “DexMonitor: Dynamically Analyzing and Monitoring Obfuscated Android Applications”, IEEE, pp. 1-12 (Year: 2018). [cited by examiner]
Avila et al, “Evaluating Dalvik Instructions Through Dynamic Analysis of Bytecodes”, IEEE, pp. 1 (Year: 2012). [cited by examiner]
Xu et al, “Copy-and-patch compilation: a fast compilation algorithm for high-level languages and bytecode”, ACM, pp. 1-31 (Year: 2021). [cited by examiner]
Bartel et al, “Dexpler: converting Android Dalvik bytecode to Jimple for static analysis with Soot”, ACM, pp. 1-13 (Year: 2012). [cited by examiner]
Burcur et al, “Parallel symbolic execution for automated real-world soware testing”, ACM, pp. 1-16 (Year: 2011). [cited by examiner]