Java virtual machine
Manufacturing cheap, resilient, and stealthy opaque constructs
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Protecting Java code via code obfuscation
Crossroads - Speical issue on robotics
Inside the Java Virtual Machine
Inside the Java Virtual Machine
Java Virtual Machine Specification
Java Virtual Machine Specification
Programming for the Java Virtual Machine with Cdrom
Programming for the Java Virtual Machine with Cdrom
Java Language Specification, Second Edition: The Java Series
Java Language Specification, Second Edition: The Java Series
Compiling for the .Net Common Language Runtime
Compiling for the .Net Common Language Runtime
Programming C#
Breaking Abstractions and Unstructuring Data Structures
ICCL '98 Proceedings of the 1998 International Conference on Computer Languages
Overcoming the obfuscation of Java programs by identifier renaming
Journal of Systems and Software
On instrumenting obfuscated java bytecode with aspects
Proceedings of the 2006 international workshop on Software engineering for secure systems
Tamper-proofing basis path by using oblivious hashing on Java
ACM SIGPLAN Notices
ACM Transactions on Design Automation of Electronic Systems (TODAES)
Analysis of Program Obfuscation Schemes with Variable Encoding Technique
IEICE Transactions on Fundamentals of Electronics, Communications and Computer Sciences
Secure distribution of confidential information via self-destructing data
DNCOCO'09 Proceedings of the 8th WSEAS international conference on Data networks, communications, computers
Introducing dynamic name resolution mechanism for obfuscating system-defined names in programs
SE '08 Proceedings of the IASTED International Conference on Software Engineering
A self-destructing file distribution system with feedback for peer-to-peer networks
ACS'09 Proceedings of the 9th WSEAS international conference on Applied computer science
A novel obfuscation: class hierarchy flattening
FPS'12 Proceedings of the 5th international conference on Foundations and Practice of Security
AppInk: watermarking android apps for repackaging deterrence
Proceedings of the 8th ACM SIGSAC symposium on Information, computer and communications security
Hi-index | 0.00 |
There exist several obfuscation tools for preventing Java bytecode from being decompiled. Most of these tools, simply scramble the names of the identifiers stored in a bytecode by substituting the identifiers with meaningless names. However, the scrambling technique cannot deter a determined cracker very long. We propose several advanced obfuscation techniques that make Java bytecode impossible to recompile or make the decompiled program difficult to understand and to recompile. The crux of our approach is to over use an identifier. That is, an identifier can denote several entities, such as types, fields, and methods, simultaneously. An additional benefit is that the size of the bytecode is reduced because fewer and shorter identifier names are used. Furthermore, we also propose several techniques to intentionally introduce syntactic and semantic errors into the decompiled program while preserving the original behaviors of the bytecode. Thus, the decompiled program would have to be debugged manually. Although our basic approach is to scramble the identifiers in Java bytecode, the scrambled bytecode produced with our techniques is much harder to crack than that produced with other identifier scrambling techniques. Furthermore, the run-time efficiency of the obfuscated bytecode is also improved because the size of the bytecode becomes smaller after obfuscation.