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

Leave a Reply

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.