IPC분류정보
국가/구분 |
United States(US) Patent
등록
|
국제특허분류(IPC7판) |
|
출원번호 |
US-0879838
(2001-06-12)
|
발명자
/ 주소 |
- Beck, Ralph L.
- Romanchuk, Michael Walter
|
출원인 / 주소 |
|
대리인 / 주소 |
|
인용정보 |
피인용 횟수 :
60 인용 특허 :
132 |
초록
▼
Methods and an apparatus for instrumenting object oriented software that do not require modification to existing source code or to executable files, nor do they require modification to any existing sequences of object resident instructions. Methods include the class interceptor, doppelganger and met
Methods and an apparatus for instrumenting object oriented software that do not require modification to existing source code or to executable files, nor do they require modification to any existing sequences of object resident instructions. Methods include the class interceptor, doppelganger and method hijacking software instrumentation techniques. The class interceptor technique intercepts and monitors the paths of execution associated with methods inherited by a target class. The class doppelganger technique intercepts and monitors the paths of execution entering a target class. The method hijacking technique creates and adds instrumented methods directly to a target class.
대표청구항
▼
1. A method for instrumenting object-oriented virtual-machine-executable software comprised of class files containing bytecode including instructions, each class file being defined by a class and each class being associated with a class-hierarchy location and having a corresponding class name, the m
1. A method for instrumenting object-oriented virtual-machine-executable software comprised of class files containing bytecode including instructions, each class file being defined by a class and each class being associated with a class-hierarchy location and having a corresponding class name, the method comprising the steps of:(a) identifying a class included in the software as a target class wherein the target class is associated with a first class-hierarchy location and with a first class name;(b) instrumenting the target class by one of(i) creating a new instrumented class separate from the target class, adding instrumentation to the new instrumented class, and assigning the new instrumented class to a class-hierarchy location adjacent to and above the first class-hierarchy location of the target class, whereby the instructions of the target class remain in an original, unmodified form; and(ii) creating a new instrumented class separate from the target class, adding instrumentation to the new instrumented class, and assigning the new instrumented class to a class-hierarchy location adjacent to and below the first class-hierarchy location of the target class, assigning the first class name to the new instrumented class and assigning a second class name to the target class whereby the instructions of the target class remain in an original, unmodified form; and(iii) creating an instrumented class of the target class by adding instrumentation to the target class without modifying the instructions within the target class and retaining the first class name for the new instrumented class, whereby the target class becomes the instrumented class and the instructions of the target class remain in an original, unmodified form; and,(c) causing a virtual machine to process the class having the first class name as the target class.2. The method of claim 1 including the following by the steps of:(aa) after completing step (a), operating a virtual machine to initiate loading and execution of the virtual machine executable software;(ab) after completing step (aa) suspending the operation of the virtual machine after loading and before linking the target class;(ca) after completing step (c), un-suspending operation of the virtual machine.3. The method of claim 1 including the following by the steps of:(aa) after completing step (a), operating a virtual machine to initiate loading and execution of the virtual machine executable software;(ab) after completing step (aa) suspending the operation of the virtual machine after loading and before linking the target class to execute a software program that executes step (c);(ca) upon termination of the software program that executes step (c) resuming the operation of the virtual machine.4. The method of claim 1 wherein the virtual-machine is a JAVA™ virtual machine and the step of identifying the target class included within the virtual machine executable software includes the steps of:(a) specifying a set of class attribute names and associated value descriptions matching class attribute names and associated values possessed by a class included in the virtual-machine-executable software; the set including an attribute name of a set of attribute names includingi. a class name,ii. an interface name,iii. a parent class name,iv. an inherited method name,v. a defined method name,vi. a private method name,vii. an inherited field name,viii. a defined field name,ix. a private field name,x. a constant value attribute,xi. a synthetic attribute,xii. a code attribute,xiii. an exception attribute, andxiv. a depreciated attribute,(b) searching for a class possessing a class attribute name and an associated value consistent with the set of specified class attribute name and associated value description; and(c) classifying the class posessing a attribute name and an associated value consistent with the set of specified class attribute names and associated value description as the target class.5. The method of claim 1 wherein the steps of suspending and un-suspending the operation of the virtual machine are performed using an interface provided by the virtual machine.6. The method of claim 1 wherein the steps of suspending and un-suspending the operation of the virtual machine are performed using a virtual machine that is modified to perform this capability.7. The method of claim 1 wherein the virtual machine is a JAVA™ virtual machine.8. The method of claim 1 wherein the virtual-machine is a JAVA™ virtual machine and the steps of adding instrumentation to the target class include adding, removing, modifying, reordering or substituting a named class component of a set of named class components including:(i) a class name,(ii) a super class name,(iii) a interface index array,(iv) a field table,(v) a method table,(vi) a constant pool,(vii) an attribute table,(viii) an index array, and(ix) access flags.9. The method of claim 6 wherein the class component is represented by a plurality of memory locations, the step of modifying a class component including adding, removing, reordering or substituting a memory locations representing the class component or changing the content of a memory location representing the class component.10. The method of claim 1 wherein the target class is represented by a plurality of memory locations, the step of adding instrumentation to the target class including adding, removing, or reordering or substituting a memory location representing the target class or changing the contents of a memory I location representing the target class.11. The method of claim 1 wherein the step of assigning the new instrumented class to a class hierarchy location adjacent to and above the class hierarchy location associated with the target class includes:modifying the new instrumented class to recognize a super class associated with the target class as the super class associated with the new instrumented class;modifying the target class to recognize the new instrumented class as the super class associated with the target class.12. The method of claim 1 wherein the step of assigning the new instrumented class to a class hierarchy location adjacent to and below the class hierarchy location associated with the target class includes modifying the new instrumented class to recognize the target class as the super class associated with the new instrumented class.13. An apparatus for instrumenting object oriented virtual-machine-executable software comprised of class files containing bytecode including instructions, each class file being defined by a class and associated with a class-hierarchy location and having a corresponding class name, comprising:(a) a target class identifier that identifies a class included in the software as a target class wherein the target class is associated with a first class-hierarchy location and with a first class name;(b) an instrumenter instrumenting the bytecode of the target class by one of(i) creating a new instrumented class separate from the target class, adding instrumentation to the new instrumented class, and assigning the new instrumented class to a class-hierarchy location adjacent to and above the first class-hierarchy location of the target class, whereby the instructions of the target class remain in an original, unmodified form;(ii) creating a new instrumented class separate from the target class, adding instrumentation to the new instrumented class, and assigning the new instrumented class to a class-hierarchy location adjacent to and below the first class-hierarchy location of the target class, assigning the first class name to the new instrumented class and assigning a second class name to the target class, whereby the instructions of the target class remain in original, unmodified form; and(iii) creating an instrumented class of the target class by adding instrumentation to the target class without modifying the instructions within the target class and retaining the first class name for the new instrumented class, whereby the target class becomes the instrumented class and the instructions of the target class remain in the original, unmodified form; and,(c) a virtual machine for processing the class having the first name as the target class.14. The apparatus for instrumenting object oriented virtual-machine-executable software of claim 13, further including class identification apparatus for identifying a class included within object oriented virtual-machine-executable software, the class identification apparatus comprising:a class query engine which receives as input a set of class attribute names and associated value descriptions; anda class searcher that sequentially searches classes included in the software and performs a predetermined action upon identifying a class that possesses a set of class attribute names and associated values that match the set of class attribute names and associated value descriptions as the target class.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.