Breaking abstractions and unstructuring data structures

Christian S Collberg, Clark Thomborson, Douglas Low

Research output: Chapter in Book/Report/Conference proceedingConference contribution

102 Citations (Scopus)

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. Code obfuscation is one of several techniques which has been proposed to alleviate this situation. 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. In a previous paper [5] we have described the design of a control flow obfuscator for Java. 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.

Original languageEnglish (US)
Title of host publicationProceedings of the IEEE International Conference on Computer Languages
Editors Anon
Pages28-38
Number of pages11
DOIs
StatePublished - 1998
Externally publishedYes
EventProceedings of the 1998 International Conference on Computer Languages - Chicago, IL, USA
Duration: May 14 1998May 16 1998

Other

OtherProceedings of the 1998 International Conference on Computer Languages
CityChicago, IL, USA
Period5/14/985/16/98

Fingerprint

Data structures
Reverse engineering
Flow control
Engineers

ASJC Scopus subject areas

  • Software

Cite this

Collberg, C. S., Thomborson, C., & Low, D. (1998). Breaking abstractions and unstructuring data structures. In Anon (Ed.), Proceedings of the IEEE International Conference on Computer Languages (pp. 28-38) https://doi.org/10.1109/ICCL.1998.674154

Breaking abstractions and unstructuring data structures. / Collberg, Christian S; Thomborson, Clark; Low, Douglas.

Proceedings of the IEEE International Conference on Computer Languages. ed. / Anon. 1998. p. 28-38.

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Collberg, CS, Thomborson, C & Low, D 1998, Breaking abstractions and unstructuring data structures. in Anon (ed.), Proceedings of the IEEE International Conference on Computer Languages. pp. 28-38, Proceedings of the 1998 International Conference on Computer Languages, Chicago, IL, USA, 5/14/98. https://doi.org/10.1109/ICCL.1998.674154
Collberg CS, Thomborson C, Low D. Breaking abstractions and unstructuring data structures. In Anon, editor, Proceedings of the IEEE International Conference on Computer Languages. 1998. p. 28-38 https://doi.org/10.1109/ICCL.1998.674154
Collberg, Christian S ; Thomborson, Clark ; Low, Douglas. / Breaking abstractions and unstructuring data structures. Proceedings of the IEEE International Conference on Computer Languages. editor / Anon. 1998. pp. 28-38
@inproceedings{95e00ff06d9a449f92ae2173ae2f7440,
title = "Breaking abstractions and unstructuring data structures",
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. Code obfuscation is one of several techniques which has been proposed to alleviate this situation. 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. In a previous paper [5] we have described the design of a control flow obfuscator for Java. 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.",
author = "Collberg, {Christian S} and Clark Thomborson and Douglas Low",
year = "1998",
doi = "10.1109/ICCL.1998.674154",
language = "English (US)",
isbn = "0818684542",
pages = "28--38",
editor = "Anon",
booktitle = "Proceedings of the IEEE International Conference on Computer Languages",

}

TY - GEN

T1 - Breaking abstractions and unstructuring data structures

AU - Collberg, Christian S

AU - Thomborson, Clark

AU - Low, Douglas

PY - 1998

Y1 - 1998

N2 - 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. Code obfuscation is one of several techniques which has been proposed to alleviate this situation. 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. In a previous paper [5] we have described the design of a control flow obfuscator for Java. 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.

AB - 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. Code obfuscation is one of several techniques which has been proposed to alleviate this situation. 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. In a previous paper [5] we have described the design of a control flow obfuscator for Java. 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.

UR - http://www.scopus.com/inward/record.url?scp=0031620963&partnerID=8YFLogxK

UR - http://www.scopus.com/inward/citedby.url?scp=0031620963&partnerID=8YFLogxK

U2 - 10.1109/ICCL.1998.674154

DO - 10.1109/ICCL.1998.674154

M3 - Conference contribution

AN - SCOPUS:0031620963

SN - 0818684542

SP - 28

EP - 38

BT - Proceedings of the IEEE International Conference on Computer Languages

A2 - Anon, null

ER -