ProGuard

The standard Java and Android obfuscator

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 for you, you should have a look at DexGuard. It offers additional Android-specific security layers on top of ProGuard.


Successful applications

Desktop applications

ProGuard obfuscates Java applications. Optimization is not as important on virtual machines with advanced JIT compilation, but obfuscation helps to protect the app against reverse engineering.

Embedded applications

ProGuard optimizes and obfuscates Java applications for cell phones, Blu-ray players, set-top boxes and other constrained devices.

Mobile applications

ProGuard optimizes and obfuscates 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.

ProGuard detects and removes unused classes, fields, methods and attributes. It optimizes bytecode and removes unused instructions. ProGuard 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:





    ProGuard DexGuard
Protection against Static Analysis
Arithmetic Obfuscation
 
 
 
Class Encryption
 
 
 
Call Hiding through Reflection
 
 
 
Control Flow Obfuscation
 
 
 
Cordova/Phonegap Encryption
 
 
 
Name Obfuscation
 
 
Removal of Logging Code and Metadata
 
 
String Encryption
 
 
 
WebView Encryption
 
 
 
Native Code Obfuscation
 
 
 
Native Library Encryption
 
 
 
Obfuscation of Native Library Names
 
 
 
Asset Encryption
 
 
 
Encryption of Resource Files
 
 
 
Resource Obfuscation
 
 
Protection against Dynamic Analysis
Certificate Checks
 
 
 
Debug Detection
 
 
 
Emulator Detection
 
 
 
Root Detection
 
 
 
Root Cloaking Detection
 
 
 
Tamper Detection
 
 
 
SSL pinning
 
 
 
WebView SSL pinning
 
 
Optimization
Code Optimization
 
 
Removal of Redundant Code
 
 
Automatic Splitting of Dex Files
 
 
 
Removal of Unused Native Libraries
 
 
 
Removal of Unused Resources
 
 
 
Resource Optimization
 
 

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 to application security.

DexGuard 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. If you've successfully been using ProGuard, upgrading to DexGuard is easy. The configuration is compatible, with extra options for the additional features.

Get your quote for DexGuard