What problem does it solve?
Dynamic instrumentation helps you understand what a program is really doing at runtime—such as where execution goes, what memory it touches, and how control flow changes—especially when source code is missing, incomplete, or you need behavior verified in production-like conditions.
Core Features & Use Cases
- Dynamic Binary Instrumentation (DBI): Inject analysis callbacks to monitor instructions, memory reads/writes, and control-flow events while the program runs.
- LLVM-based runtime instrumentation: Use LLVM instrumentation passes and frameworks to add tracing/profiling at IR level, including sanitizer coverage-style collection.
- Runtime tracing & monitoring use cases: Apply function tracing, XRay-style patch/unpatch instrumentation, profiling (e.g., block frequency), syscall monitoring patterns, and eBPF coverage collection concepts.
Use cases include security research (behavior validation and monitoring), debugging opaque binaries, building coverage feedback for fuzzers, and implementing runtime performance/security monitors.
Quick Start
Use the dynamic-instrumentation skill to design an LLVM/DBI-based tracing pipeline by choosing an instrumentation approach (e.g., QBDI callbacks or LLVM IR passes) and specifying which events to record (instructions, memory access, syscalls, or coverage) for your target program.