Method and apparatus for preemptive monitoring of software binaries by instruction interception and dynamic recompilation -> Monitor Keywords
Fresh Patents
Monitor Patents Patent Organizer How to File a Provisional Patent Browse Inventors Browse Industry Browse Agents Browse Locations
     new ** File a Provisional Patent ** 
site info Site News  |  monitor Monitor Keywords  |  monitor archive Monitor Archive  |  organizer Organizer  |  account info Account Info  |  
02/01/07 | 96 views | #20070028225 | Prev - Next | USPTO Class 717 | About this Page  717 rss/xml feed  monitor keywords

Method and apparatus for preemptive monitoring of software binaries by instruction interception and dynamic recompilation

USPTO Application #: 20070028225
Title: Method and apparatus for preemptive monitoring of software binaries by instruction interception and dynamic recompilation
Abstract: A method of executing a program in a controlled environment includes initiating execution of an operating system with which the program is adapted to execute, inserting redirection logic at the beginning of the program, and executing the program such that the redirection logic is executed. A current instruction pointer is stored, and execution control is redirected to a program loader. The program loader selects a first block of instructions of the program, based at least in part on the stored current instruction pointer. This selected block of instructions is manipulated to provide a first phantom instruction block, which is executed in the controlled environment. This manipulation includes copying at least a portion of the selected first block to form the first phantom instruction block. (end of abstract)
Agent: Ip Strategies - Asheville, NC, US
Inventors: James A. Whittaker, Rahul Chaturvedi, John R. Wagner
USPTO Applicaton #: 20070028225 - Class: 717162000 (USPTO)
Related Patent Categories: Data Processing: Software Development, Installation, And Management, Software Program Development Tool (e.g., Integrated Case Tool Or Stand-alone Development Tool), Linking
The Patent Description & Claims data below is from USPTO Patent Application 20070028225.
Brief Patent Description - Full Patent Description - Patent Application Claims  monitor keywords

CROSS-REFERENCE TO RELATED DOCUMENTS

[0001] This document claims the priority benefit, and incorporates by reference in its entirety, U.S. Provision Patent Application No. 60/364,907 filed on Mar. 16, 2002.

FIELD OF THE INVENTION

[0002] The present invention relates to software monitoring, testing and analysis.

BACKGROUND OF THE INVENTION

[0003] Processes for monitoring software behavior have many applications in both offensive and defensive cyberwarfare and also in software testing/debugging. Whenever intelligence about an application needs to be gathered, the behavior of the application is monitored and conclusions drawn by analyzing the results.

[0004] When the source code of the application is available, one can monitor the behavior of the application on an instruction-by-instruction basis. Such monitoring allows the behavior to be better understood for the purposes of reengineering or debugging. Access to the source code allows exposure of all relevant information about the software's behavior, both external behavior and internal behavior. This includes calls to external components and the parameters of these calls, calls to internal components and the parameters of these calls, internally stored data, and control structures.

[0005] However, when the source code is not available, one must work with only the compiled binary of the application (for example, the executable, library or component). This means that only the machine code is available for analysis. As such it is much more difficult to get the detailed information that source debuggers can get.

[0006] Conventional systems include technology to intercept external behavior such as calls to the operating system or third party components. This technique is called system call interception. Conventional techniques also include the use of disassemblers to extract certain bits of internal information, but disassembly is a painstaking process fraught with trial and error. In general, information inside the binary executes without scrutiny and with no opportunity to intervene to change behavior in any predictable fashion. Internal functions, stored data, and individual control statements can be unreachable externally.

[0007] System call interception has many uses including proactive antivirus tools and testing/debugging tools. However, there are many behaviors that escape such external scrutiny. For example, instructions that call exception handlers or interrupts execute without making system calls and can bypass monitoring or protective software.

[0008] The only currently-known solution to intercept such dispatch mechanisms is to insert code into the operating system kernel that detects these dispatches and notifies the monitoring application. There is a disadvantage to this solution in that because the actual operating system kernel is modified, every single application is intercepted instead of just the application being monitored, and such "kernel mode" solutions tend to destabilize the operating system.

[0009] Therefore, there is a need for an improved software monitoring solution.

BRIEF SUMMARY OF THE INVENTION

[0010] The present invention includes a method of executing a program in a controlled environment, which can be embodied in software components and user interface programs that can either be incorporated into other software or that can be used in a standalone fashion. The broad process of the invention can be realized in any of many specific embodiments, and there are many advantageous uses for the process. For example, the process can be applied to blocking the behaviors of malicious programs such as viruses, worms, and Trojan horse and zombie programs. Further, the process can be used to monitor behavior so that an application can be coaxed into revealing hidden features and functionality. For example, the process can be used to crack encryption keys (to discover private data and information) and CD keys (to enable software piracy). These applications are useful as evaluation tools.

[0011] Therefore, according to an exemplary aspect of the invention, a method of executing a program in a controlled environment includes initiating execution of an operating system with which the program is adapted to execute, inserting redirection logic at the beginning of the program, and executing the program such that the redirection logic is executed. A current instruction pointer is stored, and execution control is redirected to a program loader. The program loader selects a first block of instructions of the program, based at least in part on the stored current instruction pointer. This selected block of instructions is manipulated to provide a first phantom instruction block, which is executed in the controlled environment. This manipulation includes copying at least a portion of the selected first block to form the first phantom instruction block.

[0012] The selected first block of instructions includes one or more instructions. That is, although referred to as a block, the block can be a single instruction, or it can include a number of instructions.

[0013] The manipulation of the selected block of instructions can also include marking the selected first block as read-only, or logically modifying at least a portion of the first phantom instruction block, or both. In turn, logically modifying at least a portion of the first phantom instruction block can include any one or combination of inserting program logic into the first phantom instruction block, deleting program logic from the first phantom instruction block, and changing program logic in the first phantom instruction block.

[0014] Execution of the first phantom instruction block in the controlled environment can include any one or combination of monitoring execution of the first phantom instruction block, preventing at least a first portion of the first phantom instruction block from executing, and modifying at least a second portion of the first phantom instruction block before the second portion executes. The controlled environment can include a user interface by which a user can execute and monitor execution of the first phantom instruction block.

[0015] The current instruction pointer can be stored by pushing the current instruction pointer onto a stack.

[0016] The acts can further include storing a next instruction pointer, for example, after executing the first phantom instruction block. In this case, the program loader selects a second block of instructions of the program based at least in part on the stored next instruction pointer, and the selected second block of instructions is manipulated to provide a second phantom instruction block. This manipulation of the selected second block includes copying at least a portion of the selected second block to form the second phantom instruction block, and executing the second phantom instruction block in the controlled environment. The selected second block of instructions includes one or more instructions. The manipulation of the selected first and second blocks can also include marking the first and second blocks as read-only, or logically modifying at least a portion of the first and second phantom instruction blocks, or both. In turn, logically modifying at least a portion of the first and second phantom instruction blocks can include any one or combination of inserting program logic into the first and second phantom instruction blocks, deleting program logic from the first and second phantom instruction blocks, and changing program logic in the first and second phantom instruction blocks.

[0017] The operating system can include a thread spawning routine having at least one block of instructions. In this case, the method of the invention can also include inserting second redirection logic at a beginning of the thread spawning routine that directs execution control to the program loader and executing the thread spawning routine.

[0018] The operating system can include an exception handling routine having at least one block of instructions. In this case, the method of the invention can also include inserting, at a beginning of the exception handling routine, second redirection logic that directs execution control to the program loader, and executing the exception handling routine.

[0019] According to another aspect of the present invention a method of executing, in a controlled environment, a program having at least one block of instructions includes initiating execution of an operating system with which the program is adapted to execute, and performing a number of subsequent acts for at least one of the blocks of instructions. These acts include directing execution control to a program loader. Also, a block of instructions of the program is selected by the program loader, and the selected block of instructions is manipulated to provide a phantom instruction block. This phantom instruction block is executed in the controlled environment. The manipulation of the selected block of instructions includes copying at least a portion of the selected block to form the phantom instruction block. Each selected block includes at least one instruction.

[0020] The subsequent acts can also include halting the subsequent acts based on the occurrence of a halt event.

Continue reading...
Full patent description for Method and apparatus for preemptive monitoring of software binaries by instruction interception and dynamic recompilation

Brief Patent Description - Full Patent Description - Patent Application Claims
Click on the above for other options relating to this Method and apparatus for preemptive monitoring of software binaries by instruction interception and dynamic recompilation patent application.
###
monitor keywords

How KEYWORD MONITOR works... a FREE service from FreshPatents
1. Sign up (takes 30 seconds). 2. Fill in the keywords to be monitored.
3. Each week you receive an email with patent applications related to your keywords.  
Start now! - Receive info on patent apps like Method and apparatus for preemptive monitoring of software binaries by instruction interception and dynamic recompilation or other areas of interest.
###


Previous Patent Application:
Free/outer variable capture
Next Patent Application:
Program initiation methods and embedded systems utilizing the same
Industry Class:
Data processing: software development, installation, and management

###

FreshPatents.com Support
Thank you for viewing the Method and apparatus for preemptive monitoring of software binaries by instruction interception and dynamic recompilation patent info.
IP-related news and info


Results in 0.22022 seconds


Other interesting Feshpatents.com categories:
Software:  Finance AI Databases Development Document Navigation Error