/* ******************************************************************************
 * Copyright (c) 2010-2021 Google, Inc.  All rights reserved.
 * ******************************************************************************/

/*
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * * Redistributions of source code must retain the above copyright notice,
 *   this list of conditions and the following disclaimer.
 *
 * * Redistributions in binary form must reproduce the above copyright notice,
 *   this list of conditions and the following disclaimer in the documentation
 *   and/or other materials provided with the distribution.
 *
 * * Neither the name of Google, Inc. nor the names of its contributors may be
 *   used to endorse or promote products derived from this software without
 *   specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL VMWARE, INC. OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
 * DAMAGE.
 */

/**
 ****************************************************************************
\page page_tutorial_cgo16 CGO 2016 Tutorial:Building Dynamic Tools with DynamoRIO on x86 and ARM

[9:00am-12:30pm
on Sunday March 13, 2016](http://cgo.org/cgo2016/event/building-dynamic-tools-with-dynamorio-on-x86-and-arm-dynamorio/?instance_id=14) at the [2016
International Symposium on Code Generation and Optimization](http://cgo.org/cgo2016/).

# Audience

Researchers and professionals interested in building dynamic program
analysis tools.

# Abstract

This tutorial will present the DynamoRIO tool platform and describe how
to use its API to build custom tools that utilize dynamic code
manipulation for instrumentation, profiling, analysis, optimization,
introspection, security, and more.  The DynamoRIO tool platform was first
released to the public in June 2002 and has since been used by many
researchers to develop systems ranging from taint tracking to prefetch
optimization.  DynamoRIO is publicly available in open source form and
targets Windows, Linux, Mac, and Android on IA-32, AMD64, and ARM.

# Topics

The tutorial will cover the following topics:

-  DynamoRIO API: an overview of the full range of DynamoRIO's powerful
    API, which abstracts away the details of the underlying infrastructure
    and allows the tool builder to concentrate on analyzing or modifying
    the application's runtime code stream.  It includes both high-level
    features for quick prototyping and low-level features for full control
    over instrumentation.
-  DynamoRIO system overview: a brief description of how DynamoRIO works
    under the covers
-  Description of tools provided with the DynamoRIO package, including
    the Dr. Memory memory debugging tool, the DrCov code coverage tool,
    and the DrStrace Windows system call tracing tool.
-  Sample tool starting points for building new tools
-  Advanced topics when building sophisticated tools

# Slides

The slides are now available
in [PDF](https://github.com/DynamoRIO/dynamorio/releases/download/release_6_1_0/DynamoRIO-tutorial-mar2016.pdf)
and [PPSX](https://github.com/DynamoRIO/dynamorio/releases/download/release_6_1_0/DynamoRIO-tutorial-mar2016.ppsx)
formats.

# Organizers

- Derek Bruening is the primary author of the DynamoRIO tool platform.
  Derek is currently a Software Engineer at Google.
  Previously he built DynamoRIO-based tools at VMware and co-founded
  Determina, whose Memory Firewall security technology was based on
  DynamoRIO.  Derek holds a PhD and MEng from MIT.

- Qin Zhao is a Software Engineer at Google. He holds a
PhD from NUS (National University of Singapore).  He has built several
large tools and frameworks with DynamoRIO, including the debugging
framework EDDI and parallel memory profiler and analyzer PiPA.

The organizers both work on the Dr. Memory memory debugging tool,
which is a powerful tool built on top of DynamoRIO.

# Questions

Questions about the tutorial can be sent to the
[DynamoRIO-Users](http://groups.google.com/group/DynamoRIO-Users)
mailing list.

# References

- [DynamoRIO home and API documentation](http://dynamorio.org/)
- [DynamoRIO code repository](https://github.com/DynamoRIO/dynamorio)

 ****************************************************************************
 */
