Dynamic binary modification
Subtitle: tools, techniques, and applications
By: Kim Hazelwood
Series: Synthesis lectures on computer architecture -- # 15
Publisher: Morgan & Claypool
Published: 2011
Place of publication: San Rafael, Calif. (1537 Fourth Street, San Rafael, CA 94901 USA)
Language: eng
Format: [electronic resource] :
ISBN-13: 9781608454594; 9781608454587
Subjects: Execution; Application software; Software maintenance; Computer programs
Other titles: Synthesis digital library of engineering and computer science.
Description: Dynamic binary modification tools form a software layer between a running application and the underlying operating system, providing the powerful opportunity to inspect and potentially modify every user-level guest application instruction that executes. Toolkits built upon this technology have enabled computer architects to build powerful simulators and emulators for design-space exploration, compiler writers to analyze and debug the code generated by their compilers, software developers to fully explore the features, bottlenecks, and performance of their software, and even end-users to extend the functionality of proprietary software running on their computers.
Notes: Part of: Synthesis digital library of engineering and computer science.

Series from website.

Includes bibliographical references (p. 59-65).

Abstract freely available; full-text restricted to subscribers or individual document purchasers.

Also available in print.

Mode of access: World Wide Web.

System requirements: Adobe Acrobat Reader.
Table of contents: title: Acknowledgments; title: 1. Dynamic binary modification: overview; title: Utility; title: Functionality; title: System performance; title: High-level summary; title: 2. Using a dynamic binary modifier; title: Heavyweight vs. lightweight control; title: JIT-mode execution; title: Probe-mode execution; title: Persistent binary modification; title: Launching the system; title: Complete process control; title: Attaching to an existing process; title: Programmable instrumentation; title: Platform-specific behaviors; title: End-user optimizations; title: Debugging your plug-in tool; title: 3. Program analysis and debugging; title: Program analysis examples; title: Parallel program analysis; title: Deterministic replay; title: Customizable debugging; title: 4. Active program modification; title: Fine-grained instruction modification; title: Function replacement; title: Dynamic optimization; title: Sandboxing and security enforcement; title: 5. Architectural exploration; title: Simulation; title: Trace generation; title: Functional cache simulation; title: Functional branch prediction simulation; title: Timing simulation; title: Emulation; title: Supporting new instructions; title: Masking hardware flaws; title: Binary translation; title: Design-space exploration; title: 6. Advanced system internals; title: Modes of execution; title: Modified copy on demand; title: Modification in place; title: A shared address space; title: Acquiring control; title: Maintaining control: JIT compilation; title: Storing modified code: the code cache; title: Forming traces of modified code; title: Code cache eviction and replacement; title: Code cache introspection; title: Handling self-modifying code; title: The emulator; title: Multithreaded program support; title: Thread-shared code caches; title: Generational cache replacement; title: Windows execution support; title: Masking overhead with parallelism; title: Remaining challenges; title: 7. Historical perspectives; title: 8. Summary and observations; title: Bibliography; title: Author's biography.