IP Library Granted Patent US 8,887,141
Granted Patent B2
US 8,887,141 · App. 11/863,828 · Granted Nov 11, 2014

Automatically modifying a native code module accessed from virtual machine bytecode to determine execution information

Inventors: Brian Day (Villa Park, IL); Daryl Hoyt (Aurora, IL)
Assignee: Symantec Corporation
G06F9/45516
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 8,887,141
App. No.
11/863,828
Granted
Nov 11, 2014
Kind
B2
Abstract

A system and method for automatically modifying a native code module accessed in a user software application are described herein. The user software application may include virtual machine bytecode. Access to the native code module may be detected during execution of the virtual machine bytecode. The native code module may be automatically modified by adding instrumentation code to determine various types of information regarding execution of the native code module, and the access may be directed to the modified native code module.

Claims (73)

1. A tangible, non-transitory computer-accessible storage medium storing program instructions executable by one or more processors to:

analyze virtual machine bytecode of a software application to detect access by the bytecode to a native code module, wherein the software application includes at least one object-oriented class;

wherein to detect access by the bytecode to the native code module, the at least one object-oriented class is analyzed responsive to the at least one object-oriented class being loading during execution of the software application;

in response to said detecting the access by the bytecode to the native code module, automatically modify the bytecode by adding additional bytecode to the software application, wherein the additional bytecode is executable to automatically modify the native code module by adding additional native code to the native code module, wherein the additional native code is executable to determine information regarding execution of the native code module during execution of the software application.

2. The computer-accessible storage medium of claim 1 ,

wherein the additional bytecode is executable to invoke a software tool that performs the automatic modification of the native code module.

3. The computer-accessible storage medium of claim 1 ,

wherein the program instructions are further executable by the one or more processors to execute the additional bytecode during execution of the software application, wherein the additional bytecode executes to add the additional native code to the native code module.

4. The computer-accessible storage medium of claim 3 ,

wherein executing the additional bytecode comprises executing the additional bytecode on a virtual machine.

5. The computer-accessible storage medium of claim 1 ,

wherein the program instructions are executable by the one or more processors to add the additional bytecode to the software application during execution of the software application.

6. The computer-accessible storage medium of claim 1 ,

wherein the program instructions are executable by the one or more processors to add the additional bytecode to the software application prior to execution of the software application.

7. The computer-accessible storage medium of claim 1 ,

wherein the software application includes bytecode implementing a first method;

wherein automatically adding the additional bytecode to the software application comprises automatically inserting at least a portion of the additional bytecode into the bytecode implementing the first method.

8. The computer-accessible storage medium of claim 1 ,

wherein the native code module comprises one or more of:

a native code library;

a native code software component;

a native code method;

a native code function.

9. The computer-accessible storage medium of claim 1 ,

wherein detecting the access to the native code module comprises one or more of:

detecting loading of a native code library;

detecting invocation of a native code routine.

10. The computer-accessible storage medium of claim 1 ,

wherein the additional native code is executable to determine one or more of:

profiling information for the native code module;

debugging information for the native code module;

tracing information for the native code module;

monitoring information for the native code module;

instrumentation information for the native code module;

information regarding a programmatic call performed by the native code module;

a parameter value passed in a programmatic call performed by the native code module.

11. The computer-accessible storage medium of claim 1 ,

wherein the additional native code is executable to determine one or more of:

timing information for the native code module;

invocation count information for the native code module;

performance information for the native code module;

memory usage information for the native code module;

resource usage information for the native code module;

network usage information for the native code module;

database access information for the native code module;

data used in the native code module.

12. The computer-accessible storage medium of claim 1 ,

wherein the program instructions are further executable to execute the modified native code module, wherein the additional native code added to the native code module executes to determine the information regarding the execution of the native code module.

13. The computer-accessible storage medium of claim 12 , wherein the program instructions are further executable by the one or more processors to:

display on a display device the information determined by the additional native code added to the native code module.

14. The computer-accessible storage medium of claim 1 , wherein the program instructions are further executable by the one or more processors to:

cache the modified native code module.

15. The computer-accessible storage medium of claim 1 ,

wherein the virtual machine bytecode of the software application comprises bytecode for a Java Virtual Machine (JVM).

16. The computer-accessible storage medium of claim 1 ,

wherein the virtual machine bytecode of the software application comprises bytecode for a Common Language Runtime (CLR) virtual machine.

17. A system comprising:

one or more processors; and

memory storing program instructions;

wherein the program instructions are executable by the one or more processors to:

analyze virtual machine bytecode of a software application to detect access by the bytecode to a native code module, wherein the software application includes at least one object-oriented class;

wherein to detect access by the bytecode to the native code module, the at least one object-oriented class is analyzed responsive to the at least one object-oriented class being loading during execution of the software application;

in response to said detecting the access by the bytecode to the native code module, automatically modify the bytecode by adding additional bytecode to the software application, wherein the additional bytecode is executable to automatically modify the native code module; and

execute the software application, wherein in executing the software application the program instructions are executable by the one or more processors to:

execute the additional bytecode added to the software application, wherein the additional bytecode executes to automatically modify the native code module by adding additional native code to the native code module, wherein the additional native code is executable to determine information regarding execution of the native code module; and

execute the modified native code module.

18. A method comprising:

a computer system analyzing virtual machine bytecode of a software application to detect access by the bytecode to a native code module, wherein the software application includes at least one object-oriented class;

wherein to detect access by the bytecode to the native code module, the at least one object-oriented class is analyzed responsive to the at least one object-oriented class being loading during execution of the software application;

in response to said detecting the access by the bytecode to the native code module, the computer system automatically modifying the bytecode by adding additional bytecode to the software application, wherein the additional bytecode is executable to automatically modify the native code module; and

the computer system executing the software application, wherein said executing the software application comprises:

executing the additional bytecode added to the software application, wherein the additional bytecode executes to automatically modify the native code module by adding additional native code to the native code module, wherein the additional native code is executable to determine information regarding execution of the native code module; and

executing the modified native code module.

Assignments (10)
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2024
From: ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC (F/K/A VERITAS US IP HOLDINGS LLC)
Reel/Frame 069712/0090 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
ASSIGNMENT OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 25, 2024
From: BANK OF AMERICA, N.A., AS ASSIGNOR
To: ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE
Reel/Frame 069440/0084 →
TERMINATION AND RELEASE OF SECURITY IN PATENTS AT R/F 037891/0726 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS US IP HOLDINGS, LLC
Reel/Frame 054535/0814 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
MERGER AND CHANGE OF NAME Recorded Apr 18, 2016
From: VERITAS US IP HOLDINGS LLC; VERITAS TECHNOLOGIES LLC
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 038455/0752 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 037891/0726 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037891/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: SYMANTEC CORPORATION
To: VERITAS US IP HOLDINGS LLC
Reel/Frame 037697/0412 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 28, 2007
From: DAY, BRIAN; HOYT, DARYL
To: SYMANTEC CORPORATION
Reel/Frame 019911/0541 →
Continuity (1)
Related Publication 20090089766A1 · Apr 2, 2009