ABSTRACT
Dynamic Binary Instrumentation (DBI) is a core technology for building debugging and profiling tools for application executables. Most state-of-the-art DBI systems have focused on the same instruction set architecture (ISA) where the guest binary and the host binary have the same ISA. It is uncommon to have a cross-ISA DBI system, such as a system that instruments ARM executables to run on x86 machines. We believe cross-ISA DBI systems are increasingly more important, since ARM executables could be more productively analyzed on x86 based machines such as commonly available PCs and servers. In this paper, we present DBILL, a cross-ISA and re- targetable dynamic binary instrumentation framework that builds on both QEMU and LLVM. The DBILL framework enables LLVM-based static instrumentation tools to become DBI ready, and deployable to different target architectures. Using address sanitizer and memory sanitizer as implementation examples, we show DBILL is an efficient, versatile and easy to use cross-ISA retargetable DBI framework.
- Address sanitizer algorithm. https://code.google.com/p/address-sanitizer/wiki/AddressSanitizerAlgorithm.Google Scholar
- Dataflow sanitizer. http://clang.llvm.org/docs/DataFlowSanitizer.html.Google Scholar
- Memory sanitizer. https://code.google.com/p/memory-sanitizer/.Google Scholar
- Dynamically translating x86 to llvm using qemu. http://infoscience.epfl.ch/record/149975/files/x86-llvm-translator-chipounov2.pdf.Google Scholar
- Thread sanitizer. https://code.google.com/p/thread-sanitizer/.Google Scholar
- F. Bellard. QEMU, a fast and portable dynamic translator. USENIX ATC'05. Google ScholarDigital Library
- D. Bruening and Q. Zhao. Practical memory checking with dr. memory. CGO '11. Google ScholarDigital Library
- D. Bruening, T. Garnett, and S. Amarasinghe. An infrastructure for adaptive dynamic optimization. CGO '03. Google ScholarDigital Library
- V. Chipounov and G. Candea. Enabling sophisticated analyses of x86 binaries with revgen. DSNW '11. Google ScholarDigital Library
- D.-Y. Hong, C.-C. Hsu, P.-C. Yew, J.-J. Wu, W.-C. Hsu, P. Liu, C.-M. Wang, and Y.-C. Chung. HQEMU: A multi- threaded and retargetable dynamic binary translator on multi-cores. CGO '12. Google ScholarDigital Library
- C.-C. Hsu, P. Liu, C.-M. Wang, J.-J. Wu, D.-Y. Hong, P.-C. Yew, and W.-C. Hsu. LnQ: Building high performance dynamic binary translators with existing compiler backends. ICPP '11. Google ScholarDigital Library
- C. Lattner and V. Adve. LLVM: A compilation framework for lifelong program analysis & transformation. CGO '04. Google ScholarDigital Library
- C.-K. Luk, R. Cohn, R. Muth, H. Patil, A. Klauser, G. Lowney, S. Wallace, V. J. Reddi, and K. Hazelwood. Pin: Building customized program analysis tools with dynamic instrumentation. PLDI '05. Google ScholarDigital Library
- N. Nethercote and J. Seward. Valgrind: A framework for heavyweight dynamic binary instrumentation. PLDI '07. Google ScholarDigital Library
- M. Payer and T. R. Gross. Fine-grained user-space security through virtualization. VEE '11. Google ScholarDigital Library
- M. Payer, E. Kravina, and T. R. Gross. Lightweight memory tracing. USENIX ATC'13. Google ScholarDigital Library
- F. Qin, C. Wang, Z. Li, H.-s. Kim, Y. Zhou, and Y. Wu. LIFT: A low-overhead practical information flow tracking system for detecting security attacks. MICRO '06. Google ScholarDigital Library
- K. Serebryany, D. Bruening, A. Potapenko, and D. Vyukov. AddressSanitizer: A fast address sanity checker. USENIX ATC'12. Google ScholarDigital Library
- C. Wang, S. Hu, H.-s. Kim, S. R. Nair, M. Breternitz, Z. Ying, and Y. Wu. StarDBT: An efficient multi-platform dynamic binary translation system. ACSAC '07. Google ScholarDigital Library
- R. Whelan, T. Leek, and D. Kaeli. Architecture-independent dynamic information flow tracking. CC '13. Google ScholarDigital Library
Index Terms
DBILL: an efficient and retargetable dynamic binary instrumentation framework using llvm backend
Recommendations
DBILL: an efficient and retargetable dynamic binary instrumentation framework using llvm backend
VEE '14Dynamic Binary Instrumentation (DBI) is a core technology for building debugging and profiling tools for application executables. Most state-of-the-art DBI systems have focused on the same instruction set architecture (ISA) where the guest binary and ...
Isolating bugs in multithreaded programs using execution suppression
Memory-related program failures in multithreaded programs can be caused by a variety of bugs. Concurrency bugs can occur due to unexpected or incorrect thread interleavings during execution. Other kinds of memory bugs, such as buffer overflows and ...
Memshepherd: comprehensive memory bug fault-tolerance system
Among all software vulnerabilities, memory bugs are most common and dangerous. Programs written in unsafe languages such as C and C++ are vulnerable to stack-based buffer overflow, heap buffer overflow, dangling pointer, and double free. Although there ...
Comments