Título: Java bytecode obfuscation
Autores: Batchelder, Michael Robert
Fecha: 2007
Publicador: McGill University - MCGILL
Fuente:
Tipo: Electronic Thesis or Dissertation
Tema: Applied Sciences - Computer Science
Descripción: Programs written for machine execution will always be susceptible to information theft. This information can include trademarked algorithms, data embedded in the program, or even data the program accesses. As technology advances computer scientists are building more and more powerful tools for reverse-engineering such as decompilers.The Java programming language is particularly open to reverse-engineering attacks because of its well-defined, open, and portable binary format. We examine one area of better-securing the intellectual property of a Java program; obfuscation. Obfuscation of a program involves transforming the code of the program into a more complex, but semantically equivalent representation. This can include the addition of confusing control flow, the removal of certain information embedded in the program which is not explicitly required for execution, or the cloaking of data.Obfuscation is one of the only techniques available other than cryptological options. While many approaches to obfuscation are ultimately reversible, it nevertheless seriously hinders those attempting to steal information by increasing the computing time and power required by software to reverse-engineer the program and also severely increases the complexity of any source code that is recovered by the reverse-engineering.In this thesis we present a number of obfuscating transformations implemented within a new automatic tool we name the Java Bytecode Obfuscator (JBCO). We present empirical measures of the performance costs of these transformations in terms of execution speed and program size. Complexity measurements that gauge the effectiveness of the obfuscations are also given. Finally, we review the feasibility of each transformation by looking at source code generated from obfuscated bytecode by various decompilers.
Les programmes écrits pour l'exécution d'ordinateur seront toujours susceptibles au vol d'information. Cette information peut inclure des algorithmes de marque de commerce, des données incluses dans le programme, ou même des données concernant les accès de programme. Suivant les avancées technologiques, les informaticiens construisent des outils de plus en plus puissants pour l'ingénierie inverse telle que le décompilateur. Le langage de programmation de Java est particulièrement ouvert aux attaques de l'ingénierie inverse en raison de son format binaire bien défini, ouvert, et portatif. Nous recherches portent sur un domaine permettant de mieux sécuriser fixer la propriété intellectuelle des programmes en Java; obscurcissement. L'obscurcissement d'un programme implique de transformer le code du programme en une représentation plus complexe mais sémantiquement équivalente. Ceci peut inclure l'addition de l'écoulement embrouillant de commande, de la supression de certaines informations incluses dans les programmes dont l'exécution n'est pas spécifiquement exigée, ou de la dissimulation des données. Excepté les techniques cryptologique s, l'obscurcissement est l'une des seules techniques disponibles. Même si beaucoup de stratégies de l'obscurissment sont finalement réversibles, il gêne sérieusement ceux qui essayent de voler l'information en augmentant la durée de calcul et la puissance exigées par les logicels d'ingénierie inverse et augmente considérablement la complexité de n'importe quel code source récupere par cette technique. Dans cette thèse nous présentons un certain nombre de transformations d'obscurcissement mises en application dans un outil automatique que nous appelons le Java Bytecode Obfuscator (JBCO). Nous présentons des mesures empiriques des coûts d'exécution de ces transformations en termes de vitesse d'exécution et taille de programme. Des mesures de complexité qui mesurent l'efficacité des obscurc
Idioma: en