Obfuscation of design intent in object-oriented applications
- 27 October 2003
- conference paper
- conference paper
- Published by Association for Computing Machinery (ACM)
- p. 142-153
- https://doi.org/10.1145/947380.947399
Abstract
Protection of digital data from unauthorized access is of paramount importance. In the past several years, much research has concentrated on protecting data from the standpoint of confidentiality, integrity and availability. Software is a form of data with unique properties and its protection poses unique challenges. First, software can be reverse engineered, which may result in stolen intellectual property. Second, software can be altered with the intent of performing operations this software must not be allowed to perform.With commercial software increasingly distributed in forms from which source code can be easily extracted, such as Java bytecodes, reverse engineering has become easier than ever. Obfuscation techniques have been proposed to impede illegal reverse engineers. Obfuscations are program transformations that preserve the program functionality while obscuring the code, thereby protecting the program against reverse engineering. Unfortunately, the existing obfuscation techniques are limited to obscuring variable names, transformations of local control flow, and obscuring expressions using variables of primitive types. In this paper, we propose obfuscations of design of object-oriented programs.We describe three techniques for obfuscation of program design. The class coalescing obfuscation replaces several classes with a single class. The class splitting obfuscation replaces a single class with multiple classes, each responsible for a part of the functionality of the original class. The type hiding obfuscation uses the mechanism of interfaces in Java to obscure the types of objects manipulated by the program. We show the results of our initial experiments with a prototype implementation of these techniques. In particular, we shown that the runtime overheads of these obfuscations tend to be small.Keywords
This publication has 6 references indexed in Scilit:
- Architectural support for copy and tamper resistant softwarePublished by Association for Computing Machinery (ACM) ,2000
- Understanding class hierarchies using concept analysisACM Transactions on Programming Languages and Systems, 2000
- Practical experience with an application extractor for JavaACM SIGPLAN Notices, 1999
- A conservative data flow algorithm for detecting all pairs of statements that may happen in parallelPublished by Association for Computing Machinery (ACM) ,1998
- Manufacturing cheap, resilient, and stealthy opaque constructsPublished by Association for Computing Machinery (ACM) ,1998
- Constant propagation with conditional branchesACM Transactions on Programming Languages and Systems, 1991