| /* ****************************************************************************** |
| * 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_cgo17 CGO 2017 Tutorial: Building Dynamic Tools with DynamoRIO on x86 and ARMv8 |
| |
| Sunday morning, February 5, 2017 at |
| the [2017 International Symposium on Code |
| Generation and Optimization](http://cgo.org/cgo2017/). |
| |
| # 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 has 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, ARM, |
| and AArch64 platforms. |
| |
| |
| # 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 performance. |
| - 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 Dr. CacheSim memory tracing |
| and cache simulation tool, the DrCov code coverage tool, the Dr. CPUSim |
| legacy CPU 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_7_0_0_rc1/DynamoRIO-tutorial-feb2017.pdf), [PPSX](https://github.com/DynamoRIO/dynamorio/releases/download/release_7_0_0_rc1/DynamoRIO-tutorial-feb2017.ppsx), |
| and [PDF |
| with embedded fonts](https://github.com/DynamoRIO/dynamorio/releases/download/release_7_0_0_rc1/DynamoRIO-tutorial-feb2017-embedded-fonts.pdf) formats (the embedded font version contains some |
| artifacts from conversion from Powerpoint that are not present in the |
| non-embedded file). |
| |
| # Organizers |
| |
| - Derek Bruening (Google) |
| - Chris Adeniyi-Jones (ARM) |
| - Edmund Grimley-Evans (ARM) |
| - Kevin Zhou (U. of Cambridge) |
| |
| # 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) |
| |
| |
| **************************************************************************** |
| */ |