| Copyright (c) 2010-2024 Google, Inc. licensed under the terms of the BSD. All other rights reserved. | |
| Copyright (c) 2000-2010 VMware, Inc. licensed under the terms of the BSD. All other 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 VMware, 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. | |
| ********************************************************** | |
| About DynamoRIO | |
| DynamoRIO is a runtime code manipulation system that supports code | |
| transformations on any part of a program, while it executes. DynamoRIO | |
| exports an interface for building dynamic tools for a wide variety of uses: | |
| program analysis and understanding, profiling, instrumentation, | |
| optimization, translation, etc. Unlike many dynamic tool systems, DynamoRIO | |
| is not limited to insertion of callouts/trampolines and allows arbitrary | |
| modifications to application instructions via a powerful IA-32/AMD64/ARM/AArch64 | |
| instruction manipulation library. DynamoRIO provides efficient, | |
| transparent, and comprehensive manipulation of unmodified applications | |
| running on stock operating systems (Windows, Linux, or Android) and commodity | |
| IA-32, AMD64, ARM, and AArch64 hardware. | |
| The DynamoRIO home page: | |
| http://dynamorio.org/ | |
| ************************************************************ | |
| Quickstart instructions for running DynamoRIO: | |
| -------------------------------------------------- | |
| On Linux: | |
| To run the application with a DynamoRIO sample client: | |
| 32-bit: | |
| % bin32/drrun -c samples/bin32/libbbsize.so -- ls | |
| 64-bit: | |
| % bin64/drrun -c samples/bin64/libbbsize.so -- ls | |
| To run the application with a DynamoRIO-based tool: | |
| 32-bit: | |
| % bin32/drrun -t drmemtrace -- ls | |
| 64-bit | |
| % bin64/drrun -t drmemtrace -- ls | |
| To run the Dr. Memory tool which is included in release packages: | |
| % bin32/drrun -t drmemory -- <my-32-bit-app> <args-to-app> | |
| For additional options and to list available tools for -t: | |
| % bin32/drrun -help | |
| For full control over child processes use a two-step process: | |
| first configure with bin32/drconfig and then invoke the parent | |
| process with bin32/drinject. | |
| -------------------------------------------------- | |
| On Windows, with examples run from a cygwin shell (for cmd shell replace | |
| the first slash with a backward slash: e.g., bin32\drrun.exe): | |
| Method 1: directly invoke an application: | |
| To run the application with a DynamoRIO sample client: | |
| 32-bit | |
| % bin32/drrun.exe -c samples/bin32/bbsize.dll -- notepad | |
| 64-bit | |
| % bin64/drrun.exe -c samples/bin64/bbsize.dll -- notepad | |
| To run the application with a DynamoRIO-based tool: | |
| 32-bit | |
| % bin32/drrun.exe -t drstrace -- notepad | |
| 64-bit | |
| % bin64/drrun.exe -t drstrace -- notepad | |
| To run the Dr. Memory tool which is included in release packages: | |
| % bin32/drrun.exe -t drmemory -- <my-32-bit-app> <args-to-app> | |
| For additional options and to list available tools for -t: | |
| % bin32/drrun.exe -help | |
| Method 2: configure an application and launch it separately. | |
| This requires administrative privileges: | |
| 32-bit: | |
| % bin32/drconfig.exe -reg notepad.exe -syswide_on -c samples/bin32/bbsize.dll | |
| 64-bit: | |
| % bin64/drconfig.exe -reg notepad.exe -syswide_on -c samples/bin64/bbsize.dll | |
| Now run the application however you normally would, with the mouse or from | |
| the command line. From a cygwin shell this will run 32-bit notepad: | |
| % cmd /c start notepad | |
| Now close notepad and a messagebox should pop up produced by the bbsize client. | |
| Note that if you use cygwin unzip to extract files from the release package | |
| .zip file, you'll need to mark all the .dll and .exe files as ugo+rx in | |
| order to execute them. | |
| ************************************************************ | |
| Instructions for building: | |
| If you are building from source, please see the DynamoRIO site for | |
| information on the required tools on both Windows and Linux: | |
| https://dynamorio.org/page_building.html | |
| ************************************************************ | |
| Getting help and reporting bugs: | |
| Query the DynamoRIO users group mailing list/discussion forum: | |
| http://groups.google.com/group/dynamorio-users | |
| Use the Issue Tracker: | |
| http://dynamorio.org/issues | |
| ************************************************************ |