Introspective Intrusion Detection

Total Page:16

File Type:pdf, Size:1020Kb

Introspective Intrusion Detection UNIVERSITY OF CALIFORNIA, IRVINE Introspective Intrusion Detection DISSERTATION submitted in partial satisfaction of the requirements for the degree of DOCTOR OF PHILOSOPHY in Computer Engineering by Byron Hawkins Dissertation Committee: Associate Professor Brian Demsky, Chair Professor Michael Franz Associate Professor Athina Markopoulou 2017 Portions of Chapters 1, 2, 5 c 2017 IEEE Portions of Chapters 1, 2, 3 c 2016 ACM Portions of Chapters 1, 4 c 2015 IEEE All other materials c 2017 Byron Hawkins DEDICATION To the International Justice Mission for their enduring effort to protect powerless individuals from the malicious intrusions of the real world. ii TABLE OF CONTENTS Page LIST OF FIGURES vii LIST OF TABLES ix LIST OF ALGORITHMS x ACKNOWLEDGMENTS xi CURRICULUM VITAE xii ABSTRACT OF THE DISSERTATION xiv 1 Introduction 1 1.1 Timeline of Important RCE Defenses . 8 1.1.1 Bug Fixing . 9 1.1.2 Traditional Intrusion Detection . 10 1.1.3 Control Flow Integrity . 12 1.1.4 Diversification . 14 1.2 Theoretical Advantages and Challenges of IID . 16 1.3 Goals of Introspective Intrusion Detection . 24 1.4 Usage Model . 29 1.4.1 Forensics . 30 1.4.2 Advanced Persistent Threats . 32 1.4.3 Field Debugging . 35 1.4.4 Profiling . 37 1.5 Prototype IID Implementations . 38 1.5.1 BlackBox for x86 COTS Binaries . 40 1.5.2 ZenIDS for PHP Applications . 42 1.6 Contributions . 44 1.7 Organization . 45 2 Paradise: a Hypothetically Pure IID 46 2.1 Platform Snares . 47 2.2 Generic Threat Model . 51 2.3 Deployment . 52 2.3.1 Generating the Trusted Profile . 53 iii 2.3.2 Monitoring . 56 2.4 Maintaining the Trusted Profile . 59 2.4.1 Blacklisting . 59 3 BlackBox 61 3.1 Intel CET . 65 3.2 Threat Model . 67 3.3 Monitoring . 67 3.3.1 Trusted Profile . 68 3.3.2 Trusting Returns . 69 3.3.3 Trusting Self-Instrumentation . 70 3.3.4 Modular Trust . 71 3.3.5 Detecting Evasion . 72 3.4 Dynamically-Generated Code . 74 3.4.1 Permission Model . 75 3.4.2 Standalone Dynamic Routines . 78 3.5 Watchdog Mode . 82 3.5.1 Stack Spy . 82 3.5.2 Sniffer Dog . 85 3.6 Evaluation . 90 3.6.1 Filtering Log Noise . 91 3.6.2 Logging and Blacklisting Exploits . 99 3.6.3 Resource Efficiency . 101 3.6.4 Security Analysis . 105 3.6.5 Verifiability . 115 4 DynamoRIO JIT Optimization 118 4.1 Background and Related Work . 122 4.1.1 DynamoRIO . 122 4.1.2 QEMU . 125 4.1.3 Pin . 126 4.1.4 Valgrind . 126 4.1.5 Specialized Applications of Binary Translation . 127 4.2 Annotation-Based Optimization . 127 4.2.1 New Annotations Identifying Code Changes . 128 4.2.2 VM Area Isolation . 129 4.2.3 Selective Fragment Removal . 129 4.3 Annotation Implementation . 132 4.3.1 Binary Annotation Scheme . 132 4.3.2 Annotation Discussion . 134 4.3.3 Annotations in 64-bit Microsoft Visual Studio . 136 4.4 Inference-Based Optimization . 139 4.4.1 Parallel Mapping on Other Platforms . 142 4.5 Evaluation . 143 iv 5 ZenIDS 148 5.1 Threat Model . 150 5.2 Monitoring . 151 5.2.1 Trusted Profile . 151 5.2.2 Detection . 155 5.2.3 Dynamic vs. Static Analysis . 159 5.3 Supporting Website Evolution . 161 5.3.1 Code Expansion Events . 163 5.3.2 Taint Tracking . 164 5.4 Performance Optimization . 165 5.4.1 Synchronizing Evolution . 167 5.5 Experimental Evaluation . 167 5.5.1 Monitoring a Vulnerable Application . 168 5.5.2 Monitoring Live Applications . 168 5.5.3 Evolution . 173 5.5.4 Resource Efficiency . 175 5.5.5 Verifiability . 177 6 Related Work 178 6.1 Control Flow Integrity . 180 6.1.1 Equivalence Class CFI for x86 . 181 6.1.2 Equivalence Class CFI for Other Platforms . 193 6.1.3 Pointer Protection CFI . 196 6.1.4 RCE Exploits vs. x86 Compiled Binaries . 197 6.1.5 Application Compatibility . 201 6.1.6 Performance . 202 6.1.7 Summarizing IID in the field of CFI . 205 6.2 CFI in the Future Ubiquity of CET . 207 6.3 Traditional Intrusion Detection . 207 6.4 PHP Security . 211 6.4.1 RCE Exploits vs. the PHP Platform . 212 6.5 Software Improvement Techniques . 214 6.5.1 Debugging . 214 6.5.2 Automated Repair . 215 6.6 Usability . 216 6.6.1 Program Comprehension . 217 6.6.2 Symbolic Execution . 218 6.6.3 Machine Learning . 218 7 Conclusions and Future Work 220 7.1 Adoption . 221 Bibliography 224 v Appendices 239 A Index of Implementation Concerns 239 List of Advantages . 239 List of Challenges . 240 List.
Recommended publications
  • Dynamic Optimization of IA-32 Applications Under Dynamorio by Timothy Garnett
    Dynamic Optimization of IA-32 Applications Under DynamoRIO by Timothy Garnett Submitted to the Department of Electrical Engineering and Computer Science in Partial Fulfillment of the Requirements for the Degree of Master of Engineering in Computer Science Abstract The ability of compilers to optimize programs statically is diminishing. The advent and increased use of shared libraries, dynamic class loading, and runtime binding means that the compiler has, even with difficult to accurately obtain profiling data, less and less knowledge of the runtime state of the program. Dynamic optimization systems attempt to fill this gap by providing the ability to optimize the application at runtime when more of the system's state is known and very accurate profiling data can be obtained. This thesis presents two uses of the DynamoRIO runtime introspection and modification system to optimize applications at runtime. The first is a series of optimizations for interpreters running under DynamoRIO's logical program counter extension. The optimizations include extensions to DynamoRIO to allow the interpreter writer add a few annotations to the source code of his interpreter that enable large amounts of optimization. For interpreters instrumented as such, improvements in performance of 20 to 60 percent were obtained. The second use is a proof of concept for accelerating the performance of IA-32 applications running on the Itanium processor by dynamically translating hot trace paths into Itanium IA-64 assembly through DynamoRIO while allowing the less frequently executed potions of the application to run in Itanium's native IA-32 hardware emulation. This transformation yields speedups of almost 50 percent on small loop intensive benchmarks.
    [Show full text]
  • Shared Source Licensing Program for the Windows Embedded Compact (Formerly Windows CE) Platform
    9/6/2020 Shared Source Initiative | Licensing Program for the Windows Embedded Compact Platform Search Microsoft.com PRODUCTS STORE DOWNLOADS SUPPORT United States Shared Source Initiative > Windows Embedded Compact Source Licensing Program Shared Source Licensing Program for the Windows® Embedded Compact (formerly Windows CE) Platform Shared Source Licensing Programs Overview Microsoft offers a Shared Source licensing program for the Windows Embedded Compact (formerly Windows CE) platform. This program is applicable to the Windows Embedded Compact and Windows Embedded CE products. The Windows Embedded Shared Source program helps OEMs and developers speed development, reduce troubleshooting and code debugging time, receive assistance in remote device support and gain a deeper technical understanding of Windows Embedded Compact software. Public/Sample Source code is built at no additional cost into the purchased copies of the Windows Embedded Compact Platform Builder toolkit and provides access to nearly 4 million lines of code. Depending on a partner’s needs and qualifications, deeper levels of Shared Source code access (Private and Premium) are available. How to Participate Public/Sample Shared Source Public/Sample Shared Source code is available at no additional cost with each purchased copy of the Windows Embedded Compact 7 Platform Builder toolkit. Private Shared Source Private Shared Source Code is an optional component of the Windows Embedded Compact 7 Platform Builder toolkit that can be installed during the setup process. The toolkit user must electronically accept the terms and conditions of the Shared Source licensing agreement (EULA) before the Private source code can be installed. Premium Derivatives Program Microsoft also offers Premium access to advanced Windows Embedded Compact 7 source code through the Premium Derivatives licensing program.
    [Show full text]
  • Open Source Mit Vorsicht Zu Geniessen
    Achim Patzner, Dr. Walter Speth, active BIT1, Bonn Open Source mit Vorsicht zu geniessen Seit Richard Stallman in den 80ern die Free Software Foundation ins Leben gerufen hat, geistert der Begriff der freien Software durch die Branche und wird allzu oft voreilig als lizenzfrei und/oder kostenfrei missverstanden. Das Gegenteil kann der Fall sein: Die Wahl für eine Open Source Plattform kann Herstellern ein Lizenzmodell aufoktroyieren, das mit den Unternehmenszielen nicht vereinbar ist. Zeit für eine Richtigstellung: Nach der "public domain software" und der bereits genannten "free software" kam im Siegeszug von Linux und mit der Veröffentlichung der Quellen des Netscape-Browsers im Mozilla-Projekt Anfang 1998 die "open source software" und mittlerweile aus dem Hause Microsoft auch noch den Begriff der "shared software" (man hat verstanden, dass derartige Campagnen durchaus Marketing-Charakter tragen). Die Free Software Foundation distanziert sich übrigens vom Begriff "open source Software"2. Allerdings steht gerade dieser Begriff für das kollektive Erstellen von Software-Projekten, aber weniger wegen eines speziellen philosophischen Ansatzes, sondern weil er zu einer Zeit geprägt wurde, in der die hohe Durchdringung der weltweiten Vernetzung die Kommunikation innerhalb der Entwicklergemeinschaft ermöglichte und weil Linux als augenscheinlicher Vertreter für Open-Source-Produkte den Kondensationskern für das Bewusstsein von kostenfreier Software darstellte. Richard Stallman wollte "Freiheit für Software", er wollte aber nicht Software im Sinne von Freibier (so seine eigene Formulierung). Die Freiheit besteht im wesentlichen darin, dass der Hersteller sein geistiges Erzeugnis, die Sourcen verfügbar macht. Deren Nutzung ist allerdings durchaus im rechtlichen Rahmen der mitgelieferten Lizenzvereinbarung zu sehen. Es geht also weder darum, Software - 2 - ohne lizenzrechtliche Einschränkungen nutzen zu können, noch geht es darum, die Anwender mit lizenzfreier Software zu versorgen.
    [Show full text]
  • Dynamic Binary Translation & Instrumentation
    Dynamic Binary Translation & Instrumentation Pin Building Customized Program Analysis Tools with Dynamic Instrumentation CK Luk, Robert Cohn, Robert Muth, Harish Patil, Artur Klauser, Geoff Lowney, Steven Wallace, Kim Hazelwood Intel Vijay Janapa Reddi University of Colorado http://rogue.colorado.edu/Pin PLDI’05 2 Instrumentation • Insert extra code into programs to collect information about execution • Program analysis: • Code coverage, call-graph generation, memory-leak detection • Architectural study: • Processor simulation, fault injection • Existing binary-level instrumentation systems: • Static: • ATOM, EEL, Etch, Morph • Dynamic: • Dyninst, Vulcan, DTrace, Valgrind, Strata, DynamoRIO C Pin is a new dynamic binary instrumentation system PLDI’05 3 A Pintool for Tracing Memory Writes #include <iostream> #include "pin.H" executed immediately before a FILE* trace; write is executed • Same source code works on the 4 architectures VOID RecordMemWrite(VOID* ip, VOID* addr, UINT32 size) { fprintf(trace,=> “%p: Pin Wtakes %p %dcare\n”, of ip, different addr, size); addressing modes } • No need to manually save/restore application state VOID Instruction(INS ins, VOID *v) { if (INS_IsMemoryWrite(ins))=> Pin does it for you automatically and efficiently INS_InsertCall(ins, IPOINT_BEFORE, AFUNPTR(RecordMemWrite), IARG_INST_PTR, IARG_MEMORYWRITE_EA, IARG_MEMORYWRITE_SIZE, IARG_END); } int main(int argc, char * argv[]) { executed when an instruction is PIN_Init(argc, argv); dynamically compiled trace = fopen(“atrace.out”, “w”); INS_AddInstrumentFunction(Instruction,
    [Show full text]
  • Microsoft's Shared Source Initiative As an Alternative to Open
    How open is open? Microsoft’s Shared Source Initiative as an Alternative to Open Source Software Anne-Kathrin Kuehnel Department of Law and Criminology, University of Wales Aberystwyth Email: [email protected] Introduction: “Judging a Book by its Cover” There are few certainties in life: everybody is playing football but, in the end, Germany wins. The murderer is always the butler. Or the gardener. It never rains in “Midsomer Murders”. Until recently, one of these used to be “Open Source good, Microsoft bad.” But now, it would appear that times have, indeed, changed and nothing in the software industry is as perceived and traditional wisdom would have it: Microsoft is opening up some of its source code. Over the past few years, Microsoft has promoted a project called “Shared Source Initiative” which allows access to source code to certain customers (e.g. research institutions and independent software vendors) on a restricted basis. Furthermore, it has also introduced some licenses which appear to give unrestricted access to source code and seem to closely resemble ‘traditional’ Open Source licenses. Given that availability of source code is a prime characteristic of Open Source Software it could be argued that Microsoft has embraced the Open Source Software philosophy. And indeed, one of Microsoft’s sharpest critics, Lawrence Lessig, is openly praising Microsoft for its Shared Source Initiative for opening up some of their source code.1 Rumour also has it that Microsoft has at least been thinking about submitting some of their licenses to the Open Source Initiative for certification.2 Does this mean that Microsoft has (finally) seen the light and embraced the Open Source philosophy? If Open Source Software was only defined by the accessibility of source code, the availability of source code would equal open source.
    [Show full text]
  • Pin: Building Customized Program Analysis Tools with Dynamic Instrumentation
    Pin: Building Customized Program Analysis Tools with Dynamic Instrumentation Chi-Keung Luk Robert Cohn Robert Muth Harish Patil Artur Klauser Geoff Lowney Steven Wallace Vijay Janapa Reddi Kim Hazelwood Intel Corporation ¡ University of Colorado ¢¤£¦¥¨§ © £ ¦£ "! #%$&'( £)&(¦*+©-,.+/01$©-!2 ©-,2¦3 45£) 67©2, £¦!2 "0 Abstract 1. Introduction Robust and powerful software instrumentation tools are essential As software complexity increases, instrumentation—a technique for program analysis tasks such as profiling, performance evalu- for inserting extra code into an application to observe its behavior— ation, and bug detection. To meet this need, we have developed is becoming more important. Instrumentation can be performed at a new instrumentation system called Pin. Our goals are to pro- various stages: in the source code, at compile time, post link time, vide easy-to-use, portable, transparent, and efficient instrumenta- or at run time. Pin is a software system that performs run-time tion. Instrumentation tools (called Pintools) are written in C/C++ binary instrumentation of Linux applications. using Pin’s rich API. Pin follows the model of ATOM, allowing the The goal of Pin is to provide an instrumentation platform for tool writer to analyze an application at the instruction level with- building a wide variety of program analysis tools for multiple archi- out the need for detailed knowledge of the underlying instruction tectures. As a result, the design emphasizes ease-of-use, portabil- set. The API is designed to be architecture independent whenever ity, transparency, efficiency, and robustness. This paper describes possible, making Pintools source compatible across different archi- the design of Pin and shows how it provides these features.
    [Show full text]
  • Enabling Dynamic Analysis of Legacy Embedded Systems in Full Emulated Environment Ta-Lun Yen Txone Iot/ICS Security Research Labs (Trend Micro) $(Whoami)
    Enabling dynamic analysis of Legacy Embedded Systems in full emulated environment Ta-Lun Yen TXOne IoT/ICS Security Research Labs (Trend Micro) $(whoami) ● @evanslify ● Researcher @ TXOne Networks (Trend Micro), 2019/11-present ● Reverse Engineering, protocol analysis, wireless, hardware 2 2021-07-12 Outline ● Our goals & Background of Windows CE6 ● CE6 Bootloader & power-on initialization ● Inside CE6 Application Loader & Memory management ● Reconstructing extracted binaries to dynamic execution ● Conclusion 3 2021-07-12 Our goal ● Emulate CE6 image from device with QEMU ● We don’t want to buy every hardware for research – We ended up buying one actually (for comparison) ● Serial ports & debugger is not present on every hardware 4 2021-07-12 Background of Windows CE6 5 2021-07-12 Horrors from the ancient ● WinCE hasn’t been actively exploited (yet…) ● However, it runs everywhere – In cars, Parking meters, aircraft IFEs, subway turnstiles, medical devices, power plants... 6 2021-07-12 Difference between {NT, CE} ● Microsoft Shared Source Initiative: (partial) source code ● Loosely adheres to NT APIs and behavior ● Real-time OS 7 2021-07-12 Difference between {NT, CE} ● While having different APIs and behaviors between CE and NT... ● Some exploits and techniques might work on both CE & NT – ...with some efforts, e.g MS17-010 [1] [1] https://www.fracturelabs.com/posts/2017/exploiting-ms17-010-on-windows-embedded-7- devices/ 8 2021-07-12 Current methods to study CE6 firmware ● File extraction – https://github.com/nlitsme/eimgfs (was dumprom)
    [Show full text]
  • Incorporating the Commons: a Political Economic Analysis
    INCORPORATING THE COMMONS: A POLITICAL ECONOMIC ANALYSIS OF CORPORATE INVOLVEMENT IN FREE AND OPEN SOURCE SOFTWARE by BENJAMIN J. BIRKINBINE A DISSERTATION Presented to the School of Journalism and Communication and the Graduate School of the University of Oregon in partial fulfillment of the requirements for the degree of Doctor of Philosophy September 2014 DISSERTATION APPROVAL PAGE Student: Benjamin J. Birkinbine Title: Incorporating the Commons: A Political Economic Analysis of Corporate Involvement in Free and Open Source Software This dissertation has been accepted and approved in partial fulfillment of the requirements for the Doctor of Philosophy degree in the School of Journalism and Communication by: Dr. Janet Wasko Chairperson Dr. Biswarup Sen Core Member Dr. Gabriela Martinez Core Member Eric Priest, J.D. Institutional Representative and J. Andrew Berglund Dean of the Graduate School Original approval signatures are on file with the University of Oregon Graduate School. Degree awarded September 2014 ii DISSERTATION ABSTRACT Benjamin J. Birkinbine Doctor of Philosophy School of Journalism and Communication September 2014 Title: Incorporating the Commons: A Political Economic Analysis of Corporate Involvement in Free and Open Source Software Free (libre) and open source software (FLOSS) emerged in the 1980s as a radical alternative to proprietary software. Fighting back against what FLOSS enthusiasts viewed as overly restrictive intellectual property protections placed on proprietary software, FLOSS was designed with the intent of granting users the right to study, modify, adapt, or otherwise tinker with the source code of software. As such, FLOSS users were able to collaborate in producing software that could be distributed freely and widely to others, who could, in turn, make changes to the software.
    [Show full text]
  • Table of Contents
    Table of Contents Preface . ix 1. Open Source Licensing, Contract, and Copyright Law . 1 Basic Principles of Copyright Law 1 Contract and Copyright 3 Open Source Software Licensing 4 Issues with Copyrights and Patents 7 The Open Source Definition 8 Warranties 11 2. The MIT, BSD, Apache, and Academic Free Licenses . 14 The MIT (or X) License 14 The BSD License 15 The Apache License, v1.1 and v2.0 17 The Academic Free License 24 Application and Philosophy 30 3. The GPL, LGPL, and Mozilla Licenses . 34 GNU General Public License 35 GNU Lesser General Public License 49 The Mozilla Public License 1.1 (MPL 1.1) 62 Application and Philosophy 81 4. Qt, Artistic, and Creative Commons Licenses . 85 The Q Public License 85 Artistic License (Perl) 90 Creative Commons Licenses 98 vii 5. Non-Open Source Licenses . 114 Classic Proprietary License 114 Sun Community Source License 120 Microsoft Shared Source Initiative 144 6. Legal Impacts of Open Source and Free Software Licensing . 147 Entering Contracts 148 Statutory Developments Related to Software Contracts 150 The Self-Enforcing Nature of Open Source and Free Software Licenses 151 The Global Scope of Open Source and Free Software Licensing 153 The “Negative Effects” of Open Source and Free Software Licensing 154 Community Enforcement of Open Source and Free Software Licenses 158 Compatible and Incompatible Licensing: Multiple and Cross Licensing 159 7. Software Development Using Open Source and Free Software Licenses . 164 Models of Open Source and Free Software Development 164 Forking 171 Choosing an Open Source or Free Software License 174 Drafting Open Source Licenses 176 Appendix: Creative Commons Attribution-NoDerivs License .
    [Show full text]
  • Open Source Software: Risks and Rewards V2.0, 03 August 2005
    Open Source Software: Risks and Rewards v2.0, 03 August 2005 Author(s)Gary Hein Conclusion Open source software (OSS) brings new opportunities and risks to information technology (IT) vendors and customers. Software commoditization is being profoundly affected from the infrastructure layer and moving up to the application layer. As a result, OSS is changing the strategies and business models of hardware and software vendors and system integrators. Customers should understand the risks and rewards of OSS, and should formulate strategies that bring OSS benefits to their IT departments while mitigating the business and legal risks. Synopsis Open source software (OSS) is more than just free software. It’s a development process, a distribution model, and a set of new software licenses. And, as characterized by OSS proponents, it’s a movement. OSS projects, such as Linux and Apache HTTP server, are commoditizing enterprise and Internet infrastructure, and thus pose threats for some vendors while creating new market opportunities for others. OSS brings more to information technology (IT) than just free software. It grants freedom from vendor lock-in and application churn, freedom to inspect, modify, and improve source code, and the freedom to influence or contribute to projects key to a company’s survival. But these freedoms come at a price. Although OSS is free, it isn’t always less expensive to implement due to migration, support, training, and maintenance costs. OSS projects add new twists to business risks such as vendor viability and stability, and legal issues remain uncertain as many popular licenses have yet to be tested in a court of law.
    [Show full text]
  • The Paradox of Source Code Secrecy
    KATYAL FORMATTED 6/24/19 11:31 PM THE PARADOX OF SOURCE CODE SECRECY Sonia K. Katyal† INTRODUCTION ............................................................ 102 I. SOURCE CODE SECRECY AND COPYRIGHT ............... 109 A. Code: An Introductory (and Incomplete) History .................................................................. 111 B. The Birth of Source Code Secrecy ................ 114 C. The Copyrightability of Software .................. 117 1. Early Accommodations of Trade Secrecy ... 119 2. Copyrighting Code................................... 122 D. The Continuing Overlap Between Copyright and Trade Secrecy ............................................. 125 II. THE SHIFTING BOUNDARIES OF SOFTWARE PATENTABILITY ................................................... 129 A. Patentability vs. Secrecy .............................. 131 B. The Rise and Fall of Software Patentability ... 136 1. The Opening of the Window of Patentability .............................................................. 137 2. Narrowing the Window of Patentability ..... 141 III. TRADE SECRECY AS DESTINATION .......................... 145 A. The Lingering Monopoly of Trade Secrecy ..... 146 B. Judicial Accommodation in Kewanee ........... 149 C. Rethinking Complementarity in Software ..... 151 † Haas Distinguished Chair and Chancellor’s Professor of Law, University of California at Berkeley. Many, many thanks to the following for comments and conversation: Ken Bamberger, Ash Bhagwat, Andrew Bradt, Ari Chivikula, Ryan Calo, Christian Chessman, Danielle Citron,
    [Show full text]
  • An Infrastructure for Adaptive Dynamic Optimization
    An Infrastructure for Adaptive Dynamic Optimization Derek Bruening, Timothy Garnett, and Saman Amarasinghe Laboratory for Computer Science Massachusetts Institute of Technology Cambridge, MA 02139 fiye,timothyg,[email protected] Abstract ing profile information improves the predictions but still falls short for programs whose behavior changes dynami- Dynamic optimization is emerging as a promising ap- cally. Additionally, many software vendors are hesitant to proach to overcome many of the obstacles of traditional ship binaries that are compiled with high levels of static op- static compilation. But while there are a number of com- timization because they are hard to debug. piler infrastructures for developing static optimizations, Shifting optimizations to runtime solves these problems. there are very few for developing dynamic optimizations. Dynamic optimization allows the user to improve the per- We present a framework for implementing dynamic analy- formance of binaries without relying on how they were ses and optimizations. We provide an interface for build- compiled. Furthermore, several types of optimizations are ing external modules, or clients, for the DynamoRIO dy- best suited to a dynamic optimization framework. These in- namic code modification system. This interface abstracts clude adaptive, architecture-specific, and inter-module opti- away many low-level details of the DynamoRIO runtime mizations. system while exposing a simple and powerful, yet efficient Adaptive optimizations require instant responses to and lightweight, API. This is achieved by restricting opti- changes in program behavior. When performed statically, a mization units to linear streams of code and using adaptive single profiling run is taken to be representative of the pro- levels of detail for representing instructions.
    [Show full text]