Breaking Abstractions and Unstructuring Data Structures



Christian Collberg, Clark Thomborson, Douglas Low

Department of Computer Sciences
The University of Auckland
Private Bag 92019
Auckland, New Zealand.
{collberg,cthombor,dlow001}@cs.auckland.ac.nz


Abstract

To ensure platform independence, mobile programs are distributed in forms that are isomorphic to the original source code. Such codes are easy to decompile, and hence they increase the risk of malicious reverse engineering attacks.

Several methods have been proposed to alleviate this situation. The highest level of protection is achieved with cryptographic solutions, but, unfortunately, this requires dedicated hardware with integrated decryption and execution units.

A more modest level of protection is achieved through obfuscation. An obfuscator is a tool which -- through the application of code transformations -- converts a program into an equivalent one that is more difficult to reverse engineer. The advantage of this method is that it runs on standard hardware and without any changes to virtual machines or available interpreters.

In a previous paper we have described the design of a tool that obfuscates the control flow of Java programs. In this paper we extend the design with transformations that obfuscate data structures and abstractions. In particular, we show how to obfuscate classes, arrays, procedural abstractions and built-in data types like strings, integers, and booleans.

See also the technical report A Taxonomy of Obfuscating Transformations.




Gzipped Postscript
Article A4 LETTER (77k)

Postscript
Article A4 LETTER (276k)

Gifs
Article [p1] [p2] [p3] [p4] [p5] (5*10k)
[p6] [p7] [p8] [p9] [p10] [p11] (6*10k)

Tar'ed Gifs
Article A4.tar (163k)

ASCII Text
The BibTeX entry BibTeX.bib (2k)
The Abstract Abstract.txt (2k)


Back to Collberg's Research Page
Back to Collberg's Home Page