← Back to Patent Explorer
US6026237A Expired / Lapsed US ⏱️ 0.0 years remaining

System and method for dynamic modification of class files

Assignee: International Business Machines Corp
•
Filing: 1997-11-03
•
Granted: 2000-02-15
•
Expires: 2017-11-03
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract The present invention is directed to a system and method for modifying a class file for the purpose of instrumentation, debugging, benchmarking, or making functional modifications to the class file. In addition, the present invention makes necessary changes to the components of the class file, so that the class file will pass the class file verifier before being executed. A class file is deconstructed into its components, and then selected components of the class file are modified by adding, deleting, or changing code within the components. The class file is then reconstructed, following all class file constraints imposed by the class file verifier. The present invention may also be used to modify selected code attributes of a network browser (i.e. a web browser) so that downloaded applets are saved to memory and modified before being executed by the information handling system. Class files may be modified without access to the source code, and the modified class files meet all constraints imposed by a class file verifier.

Inventors

  • 👤 Robert Francis Berry
  • 👤 Riaz Y. Hussain

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-01 11:43
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/44; G06F9/445; G06F9/44521

Claims Analysis

Total Claims: 67
Claim 1
Independent Claim 101 words
A method for modifying a class file, comprising the steps of: deconstructing the class file into one or more class file components; modifying one or more of the class file components, wherein said modifying includes the following steps: selecting one or more methods in the class file; adding one or more lines of code to an entry point in each selected method; and adding one or more lines of code to one or more exit points in each selected method; reconstructing the class file; and verifying the reconstructed class file to ensure that it will work in its intended operating environment.
Claim 2
Independent Claim 101 words
A method for modifying a class file, comprising the steps of: deconstructing the class file into one or more class file components; modifying one or more of the class file components, wherein said modifying includes the following steps: selecting one or more methods in the class file; adding one or more lines of code to an entry point in each selected method; and adding one or more lines of code to one or more exit points in each selected method; reconstructing the class file; and verifying the reconstructed class file to ensure that it will work in its intended operating environment.
Claim 3
Dependent Claim 22 words
A method for modifying a class file according to claim 1, wherein said deconstructing step is performed by a class file reader.
Claim 4
Dependent Claim 29 words
A method for modifying a class file according to claim 1, wherein said modifying step further comprises the step of modifying a constant pool section of the class file.
Claim 5
Dependent Claim 30 words
A method for modifying a class file according to claim 1, wherein said modifying step further comprises the step of modifying one or more code attributes of the class file.
Claim 6
Dependent Claim 24 words
A method for modifying a class file according to claim 1, wherein said modifying step further comprises the step of modifying an exception table.
Claim 7
Dependent Claim 25 words
A method for modifying a class file according to claim 1, wherein said modifying step further comprises the step of modifying a line number table.
Claim 8
Dependent Claim 25 words
A method for modifying a class file according to claim 1, wherein said modifying step further comprises the step of modifying a local variable table.
Claim 9
Dependent Claim 27 words
A method for modifying a class file according to claim 1, wherein said modifying step further comprises the step of modifying one or more relative jump addresses.
Claim 10
Dependent Claim 33 words
A method for modifying a class file according to claim 1, wherein said modifying step further comprises the step of writing an entry into a definition file for each modified class file component.
Claim 11
Dependent Claim 28 words
A method for modifying a class file according to claim 9, wherein the entry comprises a major code, a minor code, a class name, and a method signature.
Claim 12
Dependent Claim 36 words
A method for modifying a class file according to claim 1, wherein said verifying step comprises the step of verifying that the reconstructed class file follows one or more constraints imposed by a class file verifier.
Claim 13
Dependent Claim 44 words
A method for modifying a class file according to claim 1, wherein the class file is a Java class file, and wherein said verifying step comprises the step of verifying that the reconstructed Java class file will execute in a Java virtual machine environment.
Claim 14
Dependent Claim 31 words
A method for modifying a class file according to claim 1, wherein said modifying step comprises the step of adding instrumentation code to one or more of the class file components.
Claim 15
Dependent Claim 41 words
A method for modifying a class file according to claim 1, wherein said modifying step comprises the step of adding code to one or more of the class file components in order to change the functionality of the class file components.
Claim 16
Dependent Claim 41 words
A method for modifying a class file according to claim 1, wherein said modifying step comprises the step of deleting code from one or more of the class file components in order to change the functionality of the class file components.
Claim 17
Dependent Claim 19 words
A method for modifying a class file according to claim 1, wherein the class file contains a security signature.
Claim 18
Independent Claim 112 words
A method for modifying a class file, comprising the steps of: deconstructing a class file loader into one or more class file loader components; modifying one or more of the class file loader components; reconstructing the class file loader, wherein the reconstructed class file loader follows one or more class file constraints imposed by a class file verifier; downloading a class file using the modified class file loader; deconstructing the class file into one or more class file components; modifying one or more of the class file components; and reconstructing the class file, wherein the reconstructed class file follows the one or more class file constraints imposed by the class file verifier.
Claim 19
Independent Claim 112 words
A method for modifying a class file, comprising the steps of: deconstructing a class file loader into one or more class file loader components; modifying one or more of the class file loader components; reconstructing the class file loader, wherein the reconstructed class file loader follows one or more class file constraints imposed by a class file verifier; downloading a class file using the modified class file loader; deconstructing the class file into one or more class file components; modifying one or more of the class file components; and reconstructing the class file, wherein the reconstructed class file follows the one or more class file constraints imposed by the class file verifier.
Claim 20
Dependent Claim 29 words
A method for modifying a class file according to claim 17, wherein said downloading step further comprises the step of intercepting the class file and transforming its memory image.
Claim 21
Independent Claim 122 words
A method for intercepting and modifying a class file as it is being downloaded from a network, comprising the steps of: deconstructing a class file loader into one or more class file loader components; modifying one or more of the class file loader components; reconstructing the class file loader, wherein the reconstructed class file loader follows one or more class file constraints imposed by a class file verifier; downloading a class file using the modified class file loader; deconstructing the class file into one or more class file components; modifying one or more of the class file components; and reconstructing the class file, wherein the reconstructed class file follows the one or more class file constraints imposed by the class file verifier.
Claim 22
Independent Claim 122 words
A method for intercepting and modifying a class file as it is being downloaded from a network, comprising the steps of: deconstructing a class file loader into one or more class file loader components; modifying one or more of the class file loader components; reconstructing the class file loader, wherein the reconstructed class file loader follows one or more class file constraints imposed by a class file verifier; downloading a class file using the modified class file loader; deconstructing the class file into one or more class file components; modifying one or more of the class file components; and reconstructing the class file, wherein the reconstructed class file follows the one or more class file constraints imposed by the class file verifier.
Claim 23
Independent Claim 54 words
A method for executing a Java applet, comprising the steps of: accepting the Java applet from a server; modifying the Java applet by injecting linkage information to a new method into the Java applet; and executing the modified Java applet wherein the modified Java applet calls the new method as part of its execution.
Claim 24
Independent Claim 54 words
A method for executing a Java applet, comprising the steps of: accepting the Java applet from a server; modifying the Java applet by injecting linkage information to a new method into the Java applet; and executing the modified Java applet wherein the modified Java applet calls the new method as part of its execution.
Claim 25
Dependent Claim 131 words
A method for executing a Java applet according to claim 20, wherein said modifying step comprises the steps of: deconstructing a class file loader into one or more class file loader components, wherein the class file loader is a program within a browser; modifying one or more of the class file loader components; reconstructing the class file loader, wherein the reconstructed class file loader follows one or more class file constraints imposed by a class file verifier; downloading a class file using the modified class file loader; deconstructing the class file into one or more class file components; modifying one or more of the class file components; and reconstructing the class file, wherein the reconstructed class file follows the one or more class file constraints imposed by the class file verifier.
Claim 26
Dependent Claim 188 words
An information handling system, comprising: one or more processors; memory means for storing instructions and data for use by the processors; one or more images of an operating system for controlling the operation of the processors; an input/output system for communicating information to and from peripheral devices; at least one system bus connecting the elements of the system for efficient operation; and means for modifying a class file, wherein said means for modifying a class file includes: means for deconstructing the class file into one or more class file components; means for modifying one or more of the class file components, wherein said means for modifying one or more of the class file components includes: means for selecting one or more methods in the class file; means for adding one or more lines of code to an entry point in each selected method; and means for adding one or more lines of code to one or more exit points in each selected method; means for reconstructing the class file; and means for verifying the reconstructed class file to ensure that it will work in its intended operating environment.
Claim 27
Dependent Claim 188 words
An information handling system, comprising: one or more processors; memory means for storing instructions and data for use by the processors; one or more images of an operating system for controlling the operation of the processors; an input/output system for communicating information to and from peripheral devices; at least one system bus connecting the elements of the system for efficient operation; and means for modifying a class file, wherein said means for modifying a class file includes: means for deconstructing the class file into one or more class file components; means for modifying one or more of the class file components, wherein said means for modifying one or more of the class file components includes: means for selecting one or more methods in the class file; means for adding one or more lines of code to an entry point in each selected method; and means for adding one or more lines of code to one or more exit points in each selected method; means for reconstructing the class file; and means for verifying the reconstructed class file to ensure that it will work in its intended operating environment.
Claim 28
Dependent Claim 16 words
The information handling system of claim 22 wherein the class file is a Java class file.
Claim 29
Dependent Claim 36 words
The information handling system of claim 22 wherein the means for modifying one or more of the class file components further comprises means for adding instrumentation code to one or more of the class file components.
Claim 30
Dependent Claim 183 words
An information handling system, comprising: one or more processors; memory means for storing instructions and data for use by the processors; one or more images of an operating system for controlling the operation of the processors; an input/output system for communicating information to and from peripheral devices; at least one system bus connecting the elements of the system for efficient operation; means for modifying a class file comprising: means for deconstructing a class file loader into one or more class file loader components; means for modifying one or more of the class file loader components; means for reconstructing the class file loader, wherein the reconstructed class file loader follows one or more class file constraints imposed by a class file verifier; means for downloading a class file using the modified class file loader; means for deconstructing the class file into one or more class file components; means for modifying one or more of the class file components; and means for reconstructing the class file, wherein the reconstructed class file follows the one or more class file constraints imposed by the class file verifier.
Claim 31
Dependent Claim 183 words
An information handling system, comprising: one or more processors; memory means for storing instructions and data for use by the processors; one or more images of an operating system for controlling the operation of the processors; an input/output system for communicating information to and from peripheral devices; at least one system bus connecting the elements of the system for efficient operation; means for modifying a class file comprising: means for deconstructing a class file loader into one or more class file loader components; means for modifying one or more of the class file loader components; means for reconstructing the class file loader, wherein the reconstructed class file loader follows one or more class file constraints imposed by a class file verifier; means for downloading a class file using the modified class file loader; means for deconstructing the class file into one or more class file components; means for modifying one or more of the class file components; and means for reconstructing the class file, wherein the reconstructed class file follows the one or more class file constraints imposed by the class file verifier.
Claim 32
Dependent Claim 192 words
An information handling system, comprising: one or more processors; memory means for storing instructions and data for use by the processors; one or more images of an operating system for controlling the operation of the processors; an input/output system for communicating information to and from peripheral devices; at least one system bus connecting the elements of the system for efficient operation; means for intercepting and modifying a class file as it is being downloaded from a network, comprising: means for deconstructing a class file loader into one or more class file loader components; means for modifying one or more of the class file loader components; means for reconstructing the class file loader, wherein the reconstructed class file loader follows one or more class file constraints imposed by a class file means for downloading a class file using the modified class file loader; means for deconstructing the class file into one or more class file components; means for modifying one or more of the class file components; and means for reconstructing the class file, wherein the reconstructed class file follows the one or more class file constraints imposed by the class file verifier.
Claim 33
Dependent Claim 192 words
An information handling system, comprising: one or more processors; memory means for storing instructions and data for use by the processors; one or more images of an operating system for controlling the operation of the processors; an input/output system for communicating information to and from peripheral devices; at least one system bus connecting the elements of the system for efficient operation; means for intercepting and modifying a class file as it is being downloaded from a network, comprising: means for deconstructing a class file loader into one or more class file loader components; means for modifying one or more of the class file loader components; means for reconstructing the class file loader, wherein the reconstructed class file loader follows one or more class file constraints imposed by a class file means for downloading a class file using the modified class file loader; means for deconstructing the class file into one or more class file components; means for modifying one or more of the class file components; and means for reconstructing the class file, wherein the reconstructed class file follows the one or more class file constraints imposed by the class file verifier.
Claim 34
Dependent Claim 100 words
An information handling system, comprising: one or more processors; memory means for storing instructions and data for use by the processors; one or more images of an operating system for controlling the operation of the processors; an input/output system for communicating information to and from peripheral devices; at least one system bus connecting the elements of the system for efficient operation; means for executing a Java applet comprising: means for accepting the Java applet from a server; means for modifying the Java applet by injecting a new class into the Java applet; and means for executing the modified Java applet.
Claim 35
Dependent Claim 100 words
An information handling system, comprising: one or more processors; memory means for storing instructions and data for use by the processors; one or more images of an operating system for controlling the operation of the processors; an input/output system for communicating information to and from peripheral devices; at least one system bus connecting the elements of the system for efficient operation; means for executing a Java applet comprising: means for accepting the Java applet from a server; means for modifying the Java applet by injecting a new class into the Java applet; and means for executing the modified Java applet.
Claim 36
Dependent Claim 140 words
The information handling system of claim 27 wherein the means for modifying further comprises: means for deconstructing a class file loader into one or more class file loader components, wherein the class file loader is a program within a browser; means for modifying one or more of the class file loader components; means for reconstructing the class file loader, wherein the reconstructed class file loader follows one or more class file constraints imposed by a class file verifier; means for downloading a class file using the modified class file loader; means for deconstructing the class file into one or more class file components; means for modifying one or more of the class file components; and means for reconstructing the class file, wherein the reconstructed class file follows the one or more class file constraints imposed by the class file verifier.
Claim 37
Dependent Claim 127 words
A computer readable medium, comprising: means for modifying a class file comprising: means for deconstructing a class file loader into one or more class file loader components; means for modifying one or more of the class file loader components; means for reconstructing the class file loader, wherein the reconstructed class file loader follows one or more class file constraints imposed by a class file verifier; means for downloading a class file using the modified class file loader; means for deconstructing the class file into one or more class file components; means for modifying one or more of the class file components; and means for reconstructing the class file, wherein the reconstructed class file follows the one or more class file constraints imposed by the class file verifier.
Claim 38
Dependent Claim 127 words
A computer readable medium, comprising: means for modifying a class file comprising: means for deconstructing a class file loader into one or more class file loader components; means for modifying one or more of the class file loader components; means for reconstructing the class file loader, wherein the reconstructed class file loader follows one or more class file constraints imposed by a class file verifier; means for downloading a class file using the modified class file loader; means for deconstructing the class file into one or more class file components; means for modifying one or more of the class file components; and means for reconstructing the class file, wherein the reconstructed class file follows the one or more class file constraints imposed by the class file verifier.
Claim 39
Dependent Claim 137 words
A computer readable medium, comprising: means for intercepting and modifying a class file as it is being downloaded from a network, comprising: means for deconstructing a class file loader into one or more class file loader components; means for modifying one or more of the class file loader components; means for reconstructing the class file loader, wherein the reconstructed class file loader follows one or more class file constraints imposed by a class file verifier; means for downloading a class file using the modified class file loader; means for deconstructing the class file into one or more class file components; means for modifying one or more of the class file components; and means for reconstructing the class file, wherein the reconstructed class file follows the one or more class file constraints imposed by the class file verifier.
Claim 40
Dependent Claim 137 words
A computer readable medium, comprising: means for intercepting and modifying a class file as it is being downloaded from a network, comprising: means for deconstructing a class file loader into one or more class file loader components; means for modifying one or more of the class file loader components; means for reconstructing the class file loader, wherein the reconstructed class file loader follows one or more class file constraints imposed by a class file verifier; means for downloading a class file using the modified class file loader; means for deconstructing the class file into one or more class file components; means for modifying one or more of the class file components; and means for reconstructing the class file, wherein the reconstructed class file follows the one or more class file constraints imposed by the class file verifier.
Claim 41
Dependent Claim 44 words
A computer readable medium, comprising: means for executing a Java applet comprising: means for accepting the Java applet from a server; means for modifying the Java applet by injecting a new class into the Java applet; and means for executing the modified Java applet.
Claim 42
Dependent Claim 44 words
A computer readable medium, comprising: means for executing a Java applet comprising: means for accepting the Java applet from a server; means for modifying the Java applet by injecting a new class into the Java applet; and means for executing the modified Java applet.
Claim 43
Independent Claim 72 words
A method for modifying a class file, comprising the steps of: deconstructing the class file into one or more class file components; modifying one or more of the class file components, wherein said modifying includes the step of writing an entry into a definition file for each modified class file component; reconstructing the class file; and verifying the reconstructed class file to ensure that it will work in its intended operating environment.
Claim 44
Independent Claim 72 words
A method for modifying a class file, comprising the steps of: deconstructing the class file into one or more class file components; modifying one or more of the class file components, wherein said modifying includes the step of writing an entry into a definition file for each modified class file component; reconstructing the class file; and verifying the reconstructed class file to ensure that it will work in its intended operating environment.
Claim 45
Dependent Claim 22 words
A method for modifying a class file according to claim 32, wherein said deconstructing step is performed by a class file reader.
Claim 46
Dependent Claim 29 words
A method for modifying a class file according to claim 32, wherein said modifying step further comprises the step of modifying a constant pool section of the class file.
Claim 47
Dependent Claim 30 words
A method for modifying a class file according to claim 32, wherein said modifying step further comprises the step of modifying one or more code attributes of the class file.
Claim 48
Dependent Claim 24 words
A method for modifying a class file according to claim 32, wherein said modifying step further comprises the step of modifying an exception table.
Claim 49
Dependent Claim 25 words
A method for modifying a class file according to claim 32, wherein said modifying step further comprises the step of modifying a line number table.
Claim 50
Dependent Claim 25 words
A method for modifying a class file according to claim 32, wherein said modifying step further comprises the step of modifying a local variable table.
Claim 51
Dependent Claim 27 words
A method for modifying a class file according to claim 32, wherein said modifying step further comprises the step of modifying one or more relative jump addresses.
Claim 52
Dependent Claim 28 words
A method for modifying a class file according to claim 32, wherein the entry comprises a major code, a minor code, a class name, and a method signature.
Claim 53
Dependent Claim 36 words
A method for modifying a class file according to claim 32, wherein said verifying step comprises the step of verifying that the reconstructed class file follows one or more constraints imposed by a class file verifier.
Claim 54
Dependent Claim 44 words
A method for modifying a class file according to claim 32, wherein the class file is a Java class file, and wherein said verifying step comprises the step of verifying that the reconstructed Java class file will execute in a Java virtual machine environment.
Claim 55
Dependent Claim 31 words
A method for modifying a class file according to claim 32, wherein said modifying step comprises the step of adding instrumentation code to one or more of the class file components.
Claim 56
Independent Claim 59 words
A method for modifying a class file, the class file containing a security signature, comprising the steps of: deconstructing the class file into one or more class file components; modifying one or more of the class file components; reconstructing the class file; and verifying the reconstructed class file to ensure that it will work in its intended operating environment.
Claim 57
Independent Claim 59 words
A method for modifying a class file, the class file containing a security signature, comprising the steps of: deconstructing the class file into one or more class file components; modifying one or more of the class file components; reconstructing the class file; and verifying the reconstructed class file to ensure that it will work in its intended operating environment.
Claim 58
Dependent Claim 22 words
A method for modifying a class file according to claim 44, wherein said deconstructing step is performed by a class file reader.
Claim 59
Dependent Claim 29 words
A method for modifying a class file according to claim 44, wherein said modifying step further comprises the step of modifying a constant pool section of the class file.
Claim 60
Dependent Claim 30 words
A method for modifying a class file according to claim 44, wherein said modifying step further comprises the step of modifying one or more code attributes of the class file.
Claim 61
Dependent Claim 24 words
A method for modifying a class file according to claim 44, wherein said modifying step further comprises the step of modifying an exception table.
Claim 62
Dependent Claim 25 words
A method for modifying a class file according to claim 44, wherein said modifying step further comprises the step of modifying a line number table.
Claim 63
Dependent Claim 25 words
A method for modifying a class file according to claim 44, wherein said modifying step further comprises the step of modifying a local variable table.
Claim 64
Dependent Claim 27 words
A method for modifying a class file according to claim 44, wherein said modifying step further comprises the step of modifying one or more relative jump addresses.
Claim 65
Dependent Claim 36 words
A method for modifying a class file according to claim 44, wherein said verifying step comprises the step of verifying that the reconstructed class file follows one or more constraints imposed by a class file verifier.
Claim 66
Dependent Claim 44 words
A method for modifying a class file according to claim 44, wherein the class file is a Java class file, and wherein said verifying step comprises the step of verifying that the reconstructed Java class file will execute in a Java virtual machine environment.
Claim 67
Dependent Claim 31 words
A method for modifying a class file according to claim 44, wherein said modifying step comprises the step of adding instrumentation code to one or more of the class file components.

References Cited (Backward Citations)

US4821220A Cited
US5307499A Cited
US5459868A Cited
US5475843A Cited
WO1996012224A1 Cited
US5740441A Cited
US5732273A Cited
DE29600609U1 Cited
US5815718A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2003-02-14 2003-08-16 2004-02-15 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2007-02-14 2007-08-16 2008-02-15 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2011-02-14 2011-08-16 2012-02-15 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag