SIND: A Framework for Binary Translation Trek Palmer Dino Dai Zovi Darko Stefanovic Department of Computer Science University of New Mexico Albuquerque, NM 87131 e-mail: tpalmer,ghandi,darko @cs.unm.edu December, 2001 Abstract Recent work with dynamic optimization in platform independent, virtual machine based languages such as Java has sparked interest in the possibility of applying similar techniques to arbitrary compiled binary programs. Systems such as Dynamo, DAISY, and FX 32 exploit dynamic optimization techniques to improve performance of native or foreign architecture bi- naries. However, research in this area is complicated by the lack of openly licensed, freely available, and platform-independent experimental frameworks. SIND aims to fill this void by providing a easily-extensible and flexible framework for research and development of applica- tions and techniques of binary translation. Current research focuses are dynamic optimization of running binaries and dynamic security augmentation and integrity assurance. 1 Introduction The ideas of program optimization and instruction translation are not new, however their primary application has been in the static process of compilation. In recent years, efforts have been made to adapt these concepts to a dynamic setting. Projects such as Dynamo [2] and the Java HotSpot [12] system attempt to overcome (in a dynamic context) some of the barriers to static optimization such as those that object-oriented languages can create. The basic idea is that while a compiler must treat every code branch as equally possible, a dynamic translator can let the program itself tell the translator which branches are important and likely. This information can be used to transform the running program into a more efficient version. It can also be used to more intelligently monitor its execution for potentially dangerous activity. SIND is a modular framework for dynamic program profiling and transformation. SIND emerged when we were searching for an existing dynamic optimizer and found either non-free implementations or optimizers tied down to one specific architecture. We then decided that what was needed was a free and platform independent dynamic translation framework that could be used by everyone doing dynamic binary translation research. By examining other dynamic optimizers, 1