Obfuscate Java executable “jar”
How obfuscate standart java application? It’s very simple: you need use Proguard tool
1. Download and install proguard.
2. Create proguard config file(ex. proguard-project.txt)
-injars application.jar
-outjars obfuscate_application.jar
-libraryjars <java.home>/lib/rt.jar
-dontusemixedcaseclassnames
-verbose
-dontoptimize
-libraryjars jni/keyboardhook-win-amd64.lib
-libraryjars jni/libquaqua64.jnilib
-libraryjars libs/keyboardhook-win-amd64.lib
-libraryjars libs/keyboardhook-win-x86.lib
-keepattributes *Annotation*
-keep,includedescriptorclasses public class com.sun.jna.** {
<fields>;
<methods>;
}
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
!static !transient <fields>;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
-keep class org.sqlite.** { *; }
-keep class org.apache.** { *; }
-keep class com.sun.jna.** { *; }
-keep class de.ksquared.**{ *; }
-keep class ch.randelshofer.**{ *; }
-keep class org.netbeans.**{ *; }
-keep class com.apple.**{ *; }
-keep class org.kobjects.**{ *; }
-keep class org.ksoap2.**{ *; }
-keep class org.xmlpull.**{ *; }
-keep class org.kxml2.**{ *; }
-keep class com.tulskiy.**{ *; }
-dontnote com.sun.jna.**
-dontnote javax.swing.**
-dontnote ch.randelshofer.**
-dontnote org.apache.**
-dontnote org.kobjects.**
-dontwarn com.google.android.gms.**
-dontwarn com.google.common.annotations.**
-dontwarn com.google.common.cache.**
-dontwarn com.google.common.primitives.**
-dontwarn org.xmlpull.v1.**
-dontwarn org.sqlite.**
-dontwarn org.apache.**
-dontwarn com.sun.jna.**
-dontwarn ch.randelshofer.**
-dontwarn org.netbeans.modules.**
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keepclassmembers class **.R$* {
public static <fields>;
}
3. run command(on Windows cmd.exe or *.nix terminal)
proguard @proguard-project.txt
4. Profit!!!
Explanations:
-injars – input jar file
-outjars – output jar file