1997Unpublished venueRequires access

A Taxonomy of Obfuscating Transformations

Christian Collberg, Clark Thomborson, Douglas Low

Open publisher page 853 citations

Abstract

It has become more and more common to distribute software in forms that retain most or all of the information present in the original source code. An important example is Java bytecode. Since such codes are easy to decompile, they increase the risk of malicious reverse engineering attacks. In this paper we review several techniques for technical protection of software secrets. We will argue that automatic code obfuscation is currently the most viable method for preventing reverse engineering. We then describe the design of a code obfuscator, a tool which converts a program into an equivalent one that is more difficult to understand and reverse engineer. The obfuscator is based on the application of code transformations, in many cases similar to those used by complier optimizers. We describe a large number of such transformations, classify them, and evaluated them with respect to their potency (to what degree is a human reader confused?), resilience (how well are automatic deobfuscation attacks resisted?), and cost (how much overhead is added to the application?). We finally discuss some possible deobfuscation techniques (such as program slicing) and possible countermeasures an obfuscator could employ against them.

About this research paper

What this paper is about

It has become more and more common to distribute software in forms that retain most or all of the information present in the original source code. An important example is Java bytecode. Since such codes are easy to decompile, they increase the risk of malicious reverse engineering attacks. In this paper we review several techniques for technical protection of software secrets. We will argue that automatic code obfuscation is currently the most viable method for preventing reverse engineering. We then describe the design of a code obfuscator, a tool which converts a program into an equivalent one that is more difficult to understand and reverse engineer. The obfuscator is based on the application of code transformations, in many cases similar to those used by complier optimizers. We describe a large number of such transformations, classify them, and evaluated them with respect to their potency (to what degree is a human reader confused?), resilience (how well are automatic deobfuscation attacks resisted?), and cost (how much overhead is added to the application?). We finally discuss some possible deobfuscation techniques (such as program slicing) and possible countermeasures an obfuscator could employ against them.

Why it matters

OpenAlex reports 853 citations for this work. Citation counts describe recorded attention and do not establish research quality.

Key contribution

A contribution statement is not available in the OpenAlex record.

Method / approach

Method details are not available in the OpenAlex metadata.

Main findings

Findings are not separately available in the OpenAlex metadata.

Limitations

Limitations are not available in the OpenAlex metadata.

Applications

Application details are not available in the OpenAlex metadata.

Available abstract

It has become more and more common to distribute software in forms that retain most or all of the information present in the original source code. An important example is Java bytecode. Since such codes are easy to decompile, they increase the risk of malicious reverse engineering attacks. In this paper we review several techniques for technical protection of software secrets. We will argue that automatic code obfuscation is currently the most viable method for preventing reverse engineering. We then describe the design of a code obfuscator, a tool which converts a program into an equivalent one that is more difficult to understand and reverse engineer. The obfuscator is based on the application of code transformations, in many cases similar to those used by complier optimizers. We describe a large number of such transformations, classify them, and evaluated them with respect to their potency (to what degree is a human reader confused?), resilience (how well are automatic deobfuscation attacks resisted?), and cost (how much overhead is added to the application?). We finally discuss some possible deobfuscation techniques (such as program slicing) and possible countermeasures an obfuscator could employ against them.

Key concepts: Taxonomy (biology), Computer science, Biology, Zoology

Related papers

Back to paper searchBrowse research topicsOriginal source
A Taxonomy of Obfuscating Transformations — Research Paper | ScholarLens