Introducing dynamic name resolution mechanism for obfuscating system-defined names in programs

Name obfuscation is a software protection technique, which renames identifiers in a given program, to protect the program from illegal cracking. The conventional methods replace names appearing in the declaration part with the meaningless ones. Therefore, the methods cannot be used to obfuscate names declared in system libraries, since changing such system-defined names significantly deteriorates the program portability. This paper presents a new name obfuscation method, which can hide appearance of the system-defined names. In the proposed method, the system-defined names are statically encrypted, and the original names are resolved during run time using the reflection. An experimental evaluation on the Java platform showed that the run-time overhead for the obfuscated program was 1.74 times larger than the one for the original.

[1]  Christian S. Collberg,et al.  Breaking abstractions and unstructuring data structures , 1998, Proceedings of the 1998 International Conference on Computer Languages (Cat. No.98CB36225).

[2]  Alex Biryukov,et al.  Data Encryption Standard (DES) , 2005, Encyclopedia of Cryptography and Security.

[3]  Wuu Yang,et al.  Advanced obfuscation techniques for Java bytecode , 2004, J. Syst. Softw..

[4]  Banshi Dhar Chaudhary,et al.  Meaningfulness as a factor of program complexity , 1980, ACM '80.