maven中添加proguard来混淆代码

一步步教你使用Proguard混淆Java源代码 http://java-server.iteye.com/blog/1166114


直接使用mvn package可能直接出错,所以先用jar:jar命令得到jar文件,在使用proguard:proguard混淆。
命令在idea的Maven Projects查看。


参考: http://zhengchao123.iteye.com/blog/1872424
com.pyx4me=>com.github.wvengen,版本号要变成2.0.7
<plugin>  
    <groupId>com.pyx4me</groupId>  
    <artifactId>proguard-maven-plugin</artifactId>  
    <version>2.0.6</version>  
    <executions>  
        <execution>  
            <phase>package</phase>  
            <goals>  
                <goal>proguard</goal>  
            </goals>  
        </execution>  
    </executions>  
    <configuration>  
        <source>1.7</source>  
        <target>1.7</target>  
        <encoding>UTF-8</encoding>  
        <libs>  
            <lib>${java.home}/lib/rt.jar</lib>  
            <lib>${java.home}/lib/jsse.jar</lib>  
        </libs>   
    </configuration>  
                  
    <dependencies>  
        <dependency>  
            <groupId>net.sf.proguard</groupId>  
            <artifactId>proguard-base</artifactId>  
            <version>4.9</version>  
            <scope>runtime</scope>  
        </dependency>  
    </dependencies>  
</plugin>  

proguard.conf
# ----------------------------------
#  通过指定数量的优化能执行
#  -optimizationpasses n
# ----------------------------------
-optimizationpasses 3

# ----------------------------------
#   混淆时不会产生形形色色的类名
#   -dontusemixedcaseclassnames
# ----------------------------------
-dontusemixedcaseclassnames
# ----------------------------------
#      指定不去忽略非公共的库类
#  -dontskipnonpubliclibraryclasses
# ----------------------------------
#-dontskipnonpubliclibraryclasses

# ----------------------------------
#       不预校验
#    -dontpreverify
# ----------------------------------
# -dontpreverify

# ----------------------------------
#      输出生成信息
#       -verbose
# ----------------------------------
-verbose

#混淆时应用侵入式重载
-overloadaggressively

#优化时允许访问并修改有修饰符的类和类的成员
-allowaccessmodification
#确定统一的混淆类的成员名称来增加混淆
-useuniqueclassmembernames



#这里添加你不需要混淆的类
-dontwarn javax.crypto.**
-keep class javax.crypto.**
-keep  class com.rh.hasp.util.** {*;}
#-keep  class com.zsoftware.common.constant.** {*;}

-keep public class * extends  javax.servlet.Servlet

-keepdirectories  **
-keepattributes **


#-keepnames class * implements java.io.Serializable
# ---------保护所有实体中的字段名称----------
-keepclassmembers class * implements java.io.Serializable {
    <fields>;
}

# --------- 保护类中的所有方法名 ------------
-keepclassmembers class * {
public <methods>;
}

执行:mvn package
输出:
[INFO]
[INFO] --- maven-jar-plugin:2.3.2:jar (default-jar) @ rh-hasp ---
[INFO] Building jar: /mnt/D/work_documents/workspace_ide_linux/rh_hasp_util/target/rh-hasp-1.1.jar
[INFO]
[INFO] --- proguard-maven-plugin:2.0.6:proguard (default) @ rh-hasp ---
[INFO] execute ProGuard [-injars, '/mnt/D/work_documents/workspace_ide_linux/rh_hasp_util/target/rh-hasp-1.1_proguard_base.jar'(!META-INF/maven/**), -outjars, '/mnt/D/work_documents/workspace_ide_linux/rh_hasp_util/target/rh-hasp-1.1.jar', -include, '/mnt/D/work_documents/workspace_ide_linux/rh_hasp_util/proguard.conf', -libraryjars, '/home/pandy/m2/repository/commons-codec/commons-codec/1.9/commons-codec-1.9.jar', -libraryjars, '/home/pandy/m2/repository/commons-lang/commons-lang/2.6/commons-lang-2.6.jar', -libraryjars, '/usr/java/jdk1.7.0_51/jre/lib/rt.jar', -printmapping, '/mnt/D/work_documents/workspace_ide_linux/rh_hasp_util/target/proguard_map.txt', -printseeds, '/mnt/D/work_documents/workspace_ide_linux/rh_hasp_util/target/proguard_seeds.txt']
[INFO] proguard jar: /home/pandy/m2/repository/net/sf/proguard/proguard-base/4.9/proguard-base-4.9.jar
[proguard] ProGuard, version 4.9
[proguard] Reading input...
[proguard] Reading program jar [/mnt/D/work_documents/workspace_ide_linux/rh_hasp_util/target/rh-hasp-1.1_proguard_base.jar] (filtered)
[proguard] Reading library jar [/home/pandy/m2/repository/commons-codec/commons-codec/1.9/commons-codec-1.9.jar]
[proguard] Reading library jar [/home/pandy/m2/repository/commons-lang/commons-lang/2.6/commons-lang-2.6.jar]
[proguard] Reading library jar [/usr/java/jdk1.7.0_51/jre/lib/rt.jar]
[proguard] Initializing...
[proguard] Note: the configuration refers to the unknown class 'javax.servlet.Servlet'
[proguard] Note: there were 1 references to unknown classes.
[proguard]       You should check your configuration for typos.
[proguard] Ignoring unused library classes...
[proguard]   Original number of library classes: 19278
[proguard]   Final number of library classes:    19278
[proguard] Printing kept classes, fields, and methods...
[proguard] Shrinking...
[proguard] Removing unused program classes and class elements...
[proguard]   Original number of program classes: 8
[proguard]   Final number of program classes:    8
[proguard] Inlining subroutines...
[proguard] Optimizing...
[proguard]   Number of finalized classes:                 5
[proguard]   Number of vertically merged classes:         0
[proguard]   Number of horizontally merged classes:       0
[proguard]   Number of removed write-only fields:         3
[proguard]   Number of privatized fields:                 12
[proguard]   Number of inlined constant fields:           0
[proguard]   Number of privatized methods:                0
[proguard]   Number of staticized methods:                1
[proguard]   Number of finalized methods:                 45
[proguard]   Number of removed method parameters:         0
[proguard]   Number of inlined constant parameters:       2
[proguard]   Number of inlined constant return values:    0
[proguard]   Number of inlined short method calls:        0
[proguard]   Number of inlined unique method calls:       13
[proguard]   Number of inlined tail recursion calls:      0
[proguard]   Number of merged code blocks:                2
[proguard]   Number of variable peephole optimizations:   72
[proguard]   Number of arithmetic peephole optimizations: 0
[proguard]   Number of cast peephole optimizations:       0
[proguard]   Number of field peephole optimizations:      1
[proguard]   Number of branch peephole optimizations:     36
[proguard]   Number of string peephole optimizations:     11
[proguard]   Number of simplified instructions:           3
[proguard]   Number of removed instructions:              33
[proguard]   Number of removed local variables:           2
[proguard]   Number of removed exception blocks:          3
[proguard]   Number of optimized local variable frames:   25
[proguard] Shrinking...
[proguard] Removing unused program classes and class elements...
[proguard]   Original number of program classes: 8
[proguard]   Final number of program classes:    8
[proguard] Optimizing...
[proguard]   Number of finalized classes:                 0
[proguard]   Number of vertically merged classes:         0
[proguard]   Number of horizontally merged classes:       0
[proguard]   Number of removed write-only fields:         0
[proguard]   Number of privatized fields:                 0
[proguard]   Number of inlined constant fields:           0
[proguard]   Number of privatized methods:                0
[proguard]   Number of staticized methods:                0
[proguard]   Number of finalized methods:                 0
[proguard]   Number of removed method parameters:         1
[proguard]   Number of inlined constant parameters:       0
[proguard]   Number of inlined constant return values:    0
[proguard]   Number of inlined short method calls:        0
[proguard]   Number of inlined unique method calls:       0
[proguard]   Number of inlined tail recursion calls:      0
[proguard]   Number of merged code blocks:                0
[proguard]   Number of variable peephole optimizations:   4
[proguard]   Number of arithmetic peephole optimizations: 0
[proguard]   Number of cast peephole optimizations:       0
[proguard]   Number of field peephole optimizations:      0
[proguard]   Number of branch peephole optimizations:     1
[proguard]   Number of string peephole optimizations:     2
[proguard]   Number of simplified instructions:           0
[proguard]   Number of removed instructions:              50
[proguard]   Number of removed local variables:           1
[proguard]   Number of removed exception blocks:          0
[proguard]   Number of optimized local variable frames:   1
[proguard] Shrinking...
[proguard] Removing unused program classes and class elements...
[proguard]   Original number of program classes: 8
[proguard]   Final number of program classes:    8
[proguard] Optimizing...
[proguard]   Number of finalized classes:                 0
[proguard]   Number of vertically merged classes:         0
[proguard]   Number of horizontally merged classes:       0
[proguard]   Number of removed write-only fields:         0
[proguard]   Number of privatized fields:                 0
[proguard]   Number of inlined constant fields:           0
[proguard]   Number of privatized methods:                0
[proguard]   Number of staticized methods:                0
[proguard]   Number of finalized methods:                 0
[proguard]   Number of removed method parameters:         0
[proguard]   Number of inlined constant parameters:       0
[proguard]   Number of inlined constant return values:    0
[proguard]   Number of inlined short method calls:        0
[proguard]   Number of inlined unique method calls:       0
[proguard]   Number of inlined tail recursion calls:      0
[proguard]   Number of merged code blocks:                0
[proguard]   Number of variable peephole optimizations:   0
[proguard]   Number of arithmetic peephole optimizations: 0
[proguard]   Number of cast peephole optimizations:       0
[proguard]   Number of field peephole optimizations:      0
[proguard]   Number of branch peephole optimizations:     0
[proguard]   Number of string peephole optimizations:     2
[proguard]   Number of simplified instructions:           0
[proguard]   Number of removed instructions:              6
[proguard]   Number of removed local variables:           0
[proguard]   Number of removed exception blocks:          0
[proguard]   Number of optimized local variable frames:   0
[proguard] Shrinking...
[proguard] Removing unused program classes and class elements...
[proguard]   Original number of program classes: 8
[proguard]   Final number of program classes:    8
[proguard] Obfuscating...
[proguard] Printing mapping to [/mnt/D/work_documents/workspace_ide_linux/rh_hasp_util/target/proguard_map.txt]...
[proguard] Preverifying...
[proguard] Writing output...
[proguard] Preparing output jar [/mnt/D/work_documents/workspace_ide_linux/rh_hasp_util/target/rh-hasp-1.1.jar]
[proguard]   Copying resources from program jar [/mnt/D/work_documents/workspace_ide_linux/rh_hasp_util/target/rh-hasp-1.1_proguard_base.jar] (filtered)
[INFO]
[INFO] --- maven-jar-plugin:2.3.2:jar (default) @ rh-hasp ---
[INFO] Building jar: /mnt/D/work_documents/workspace_ide_linux/rh_hasp_util/target/rh-hasp-1.1-lib.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS

这时就已经好了,但是包结构都变了,成了a,b,c,d ....的了
虽然是混淆加密了,但是外部也不能再直接使用类来...地去引用了

猜你喜欢

转载自panyongzheng.iteye.com/blog/2013655