ProGuard is our free generic optimizer and obfuscator for Java bytecode. ProGuard makes your apps smaller (20% - 90%) and faster (10% - 20%). It's also the first step to protect your apps against reverse-engineering. Over the years, ProGuard has solidly become the industry standard in its field. It is the default tool in development environments like Oracle's Wireless Toolkit, NetBeans, EclipseME, Intel's TXE SDK and Google's Android SDK. However, when security is important, you should have a look at DexGuard, which offers additional Android-specific security layers on top of ProGuard.
Obfuscate Java applications. Optimization is not as important on virtual machines with advanced JIT compilation, but obfuscation helps to protect the app against reverse engineering.
Optimize and obfuscate Java applications for cell phones, Blu-ray players, set-top boxes, and other constrained devices.
Optimize and obfuscate Android apps. As a generic optimizer and obfuscator, ProGuard also works on Java bytecode for Android. For additional security, consider DexGuard, our dedicated product for Android.
Technically, ProGuard detects and removes unused classes, fields, methods, and attributes. It optimizes bytecode and removes unused instructions. It renames the remaining classes, fields, and methods using short meaningless names. Finally, it preverifies the processed code for Java 6 or for Java Micro Edition.
You can download the latest release, including the documentation, examples, and the source code from the official ProGuard site at Sourceforge.
ProGuard is free software. Why upgrade to DexGuard? Here's a comparison of their main features:
|Removal of logging code|
|Call hiding with reflection|
|Native code obfuscation|
|Native library encryption|
|Resource XML obfuscation|
|Root hiding detection|
|WebView SSL pinning|
|Tuned configuration for popular libraries|
Proguard provides protection against static analysis, by removing any information from the code that is not strictly necessary for executing it: unused code, identifiers, and debugging information. It's a major step up from leaving the code as it is, but it is still a passive approach.
Dexguard goes a few steps further, with techniques that are not suitable for an open-source product to protect the Java byte code. It specifically targets the Android platform, all the way to the packaging and signing of the application. The processed code is hard to reverse-engineer, extract, or modify. If you've successfully been using ProGuard, upgrading to DexGuard is easy. The configuration is compatible, with additional options for the additional features. You'll be up and running in no time.
Dexguard Enterprise actively fights static and dynamic analysis, with advanced techniques. It specifically targets the Android platform, Android resources, and Dalvik bytecode, allowing it to go further in its optimizations and protection, all the way to the packaging and signing of the application. The processed code and resources are hard to reverse-engineer, extract, or modify. Upgrading to DexGuard Enterprise is also easy. The configuration is compatible, with additional options for the advanced features.