Return to search

Tracerory - Dynamic Tracematches and Unread Memory Detection for C/C++

Dynamic binary translation allows us to analyze a program during execution
without the need for a compiler or the program's source code. In this work, we
present two applications of dynamic binary translation: tracematches and unread
memory detection.

Libraries are ubiquitous in modern software development. Each library requires
that its clients follow certain conventions, depending on the domain of the
library. Tracematches are a particularly expressive notation for specifying
library usage conventions, but have only been implemented on top of Java. In
this work, we leverage dynamic binary translation to enable the use of
tracematches on executables, particularly for compiled C/C++ programs.

The presence of memory that is never read, or memory writes that are never read
during execution is wasteful, and may be also be indicative of bugs. In addition
to tracematches, we present an unread memory detector. We built this detector
using dynamic binary translation.

We have implemented a tool which monitors tracematches on top of the Pin
framework along with unread memory. We describe the operation of our tool using
a series of motivating examples and then present our overall monitoring
approach. Finally, we include benchmarks showing the overhead of our tool on 4
open source projects and report qualitative results.

Identiferoai:union.ndltd.org:WATERLOO/oai:uwspace.uwaterloo.ca:10012/6206
Date January 2011
CreatorsEyolfson, Jonathan
Source SetsUniversity of Waterloo Electronic Theses Repository
LanguageEnglish
Detected LanguageEnglish
TypeThesis or Dissertation

Page generated in 0.0018 seconds