pDI-Tools: A Portable Dynamic Interposition Tool

Code instrumentation is a technology that allows to analyze or change the behaviour of a program during its execution. With this analysis you can discover a lot of things about the target program, even of the running operating system.

When a programmer writes a piece of code, he would like that it was correct and optimous. But reality is more difficult than this: the computers are complex, access to resources is not uniform, time sharing operating systems, thousands of configuration options... all that with the complexity of our software make the behaviour of a program something difficult to predict.

A dynamic instrumentation mechanism is a perfect tool for such situations: allows to analyze the program execution in key points almost without making interferences. Furthermore you can change easily the program execution, so its applications are virtually infinite.

pDI-Tools is a very powerful and portable API and engine that can be used to create dynamic instrumentation tools, performance tools, execution drive simulations, reverse engineering, learning, and a lot more. Its main features are portability, ease of use, compact and fast. It works with any executable, even with binaries without debug information or source code.

It implements mechanisms based on intercepting calls (code interposition) between dynamic shared objects (executable-libraries, libraries-libraries). These mechanisms exploit ELF structures and data, making them very efficient and portable. It currently works on GNU/Linux (i386, PowerPC, PowerPC 64), Solaris (SPARC 32 and 64 bits) and Irix (MIPS 32 and 64).

pDI-Tools is inspired on DITools, a dynamic interposition tool wrote by CEPBA. CEPBA is the European Center of Parallellism of Barcelona, that belongs to the Technical University of Catalonia UPC. pDI-Tools is part of a final career project developed for CEPBA by Gerardo García Peña (gerardo AT kung-foo.dhs.org).

31/10/2005 - pDI-Tools 1.0 Released!

Version 1.0.0 is out! You can download it from the pDI-Tools download page.

12/9/2005 - CVS updated

Most of pDI-Tools source code have been uploaded to the CVS repository. Now it is possible to build and use it on all platforms. I expect to publish version 1.0.0 before October... but now I have a new job and I don't have too much time to work on pDI-Tools :(

But there are goods news too: versions 9 and 10 of Solaris for SPARC are now supported by pDI-Tools.

21/6/2005 - pDI-Tools documentation have been finished

I have finished pDI-Tools documentation. Currently it is only avalaible in spanish, but I will translate the user and installation manual to english as soon as possible (probably on version 1.1.0).

I will upload pDI-Tools 1.0.0 sources (documentation and program) in the next days. It is almost finished ;)

5/6/2005 - pDI-Tools home page

pDI-Tools home page has been inaugurated! In the next days I will upload the documentation and source code.

Copyright (C) 2004,2005 Gerardo García Peña
Verbatim copying and distribution of this entire article is permitted worldwide without royalty in any medium provided this notice is preserved.
This page was updated on 2005/11/06 00:06:45 by gerardo.
This page uses valid XHTML 1.1 and CSS.