`
ponlya
  • 浏览: 160590 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

proguard 加密代码

 
阅读更多

proguard 调通了

com.pyx4me 的 proguard-maven-plugin 总是失败,com.github.wvengen调通,这工具暂时也不想去深究,调通就先用着。

<plugin>
	<groupId>com.github.wvengen</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>

执行clean package

INFO] --- proguard-maven-plugin:2.0.6:proguard (default) @ Common ---
[INFO] execute ProGuard [-injars, 'F:\JavaCode\Code\xxx-common_proguard_base.jar'(!META-INF/maven/**), -outjars, 'F:\JavaCode\Code\xxx-common.jar', -libraryjars, 'xxxx', -libraryjars, 'xxx', -libraryjars, 'F:\JavaCode\res\m2\repository\log4j\log4j\1.2.16\log4j-1.2.16.jar', -libraryjars, 'xxx', -libraryjars, 'C:\Java\JDK7\jdk1.7.0_13\jre/lib/rt.jar', -libraryjars, 'C:\Java\JDK7\jdk1.7.0_13\jre/lib/jsse.jar', -printmapping, 'F:\JavaCode\xxxproguard_map.txt', -printseeds, 'F:\JavaCode\xxxx\Common\target\proguard_seeds.txt']
[INFO] proguard jar: F:\JavaCode\res\m2\repository\net\sf\proguard\proguard-base\4.9\proguard-base-4.9.jar
 [proguard] ProGuard, version 4.9
 [proguard] Reading library jar [C:\Java\JDK7\jdk1.7.0_13\jre\lib\rt.jar]
 [proguard] Reading library jar [C:\Java\JDK7\jdk1.7.0_13\jre\lib\jsse.jar]
 [proguard] Error: You have to specify '-keep' options for the shrinking step.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE

 

proguard/InputReader.java  78行 readInput("Reading program ",    100 行的     readInput("Reading library ",
程序码里写的较为清楚,需要一些keep commands
// Check if we have at least some keep commands.
if (configuration.keep == null)
{
    throw new IOException("You have to specify '-keep' options for the shrinking step.");
}
官网上找到一个配置

<configuration>
    <options>
        <option>-allowaccessmodification</option>
        <option>-keep public class * extends java.applet.Applet { *; }</option>
    </options>
</configuration>

 添加一个keep

-keep  class com.util.time.** {*;}  

 [proguard]   Copying resources from program jar [F:\JavaCode\xxx-common_proguard_base.jar] (filtered)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS

这时就已经好了,但是包结构都变了,成了a,b,c,d ....的了

虽然是混淆加密了,但是外部也不能再直接使用类来...地去引用了,皱眉

 

部分参考了:http://blog.csdn.net/zhangjianying/article/details/7939593

下面的配置先留着:

 

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

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

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

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

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



#这里添加你不需要混淆的类

-keep  class org.** {*;} 
#-keep  class com.zsoftware.common.constant.** {*;} 
#-keep  class com.zsoftware.common.dwr.** {*;} 
#-keep  class com.zsoftware.common.servelt.** {*;} 
#-keep  class com.zsoftware.common.util.** {*;} 
#-keep  class com.zsoftware.Component.** {*;} 
#-keep  class com.zsoftware.interfacepkg.** {*;} 
#-keep  class com.zsoftware.model.** {*;} 
#-keep  class com.zsoftware.view.** {*;} 
#-keep  class com.zsoftware.webResource.** {*;} 

-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>;
}
 

 

寻找一个,外部可引用其中的类,但是类又不轻易被外面的程序所反编译的方法…………

 

 

 

 

分享到:
评论

相关推荐

    ProGuard-java混淆加密

    ProGuard能够对Java类中的代码进行压缩(Shrink),优化(Optimize),混淆(Obfuscate),预检(Preveirfy)。  1. 压缩(Shrink):在压缩处理这一步中,用于检测和删除没有使用的类,字段,方法和属性。  2. 优化...

    proguard,代码混淆

    java代码混淆工具,配置灵活,易用,适用于android平台和其他java平台

    java代码混淆器proGuard

    java代码混淆器proGuard,可以混淆函数变量、类、方法名以实现代码加密

    最新的加密混淆工具proguard6.0.3

    最新的加密混淆工具,找了几个都不能用。终于找了个最新版本

    proguard7.3.0

    proguard最新版本7.3.0,避免从github下载过慢问题。 持续更新的java代码混淆工具,java代码加密工具; 开源android代码混淆工具

    使用Proguard混淆Java源代码

    java代码很容易被反编译,可通过混淆技术来保护源码,此处我们应用开源项目proguard来进行混淆。操作使用详见:http://blog.csdn.net/odian1/article/details/8282799

    SpringBoot项目Jar包加密防止反编译详细讲解(值得珍藏)

    它可以通过混淆工具(如 ProGuard)来实现,这些工具可以将类、方法、变量等名称替换为随机生成的名称,同时改变代码结构,使其难以还原为原始代码。 2. **加密字节码** 另一种防止反编译的方法是将字节码加密,使...

    Java代码混淆工具proguard

    经典的Java代码混淆工具,可以混淆class,jar类型的文件,防止被反编译,对需要进行源码保护的代码很有用。

    Android实用图文教程之代码混淆、第三方平台加固加密、渠道分发

    第一步:代码混淆(注意引入的第三方jar) 在新版本的ADT创建项目时,混码的文件不再是proguard.cfg,而是project.properties和proguard-project.txt。 新建一个项目的时候,会自动生成project.properties和proguard-...

    谜题:Gradle插件-混淆器字符串加密(AndroidJava)

    这个项目是一个简单的Gradle插件,可帮助您在编译时加密Android Java代码的所有String值。 重要提示:如果您的项目不受git或SVN之类的SCM工具管理,则Enigma插件将不会执行。 建议:在激活Enigma的情况下编译您的...

    jar代码混淆器最新版5.3.3

    最新版,官方网址:http://proguard.sourceforge.net/

    android-the-movie-db

    android-the-movie-db 阿皮 系统设计 使用设计样式 建筑模式 使用干净的架构 UI-&gt;框架- 演示者-&gt;接口适配器- &gt;应用程序业务规则- ...使用ProGuard混淆 加密数据库 使用证书固定和Dns解析程序到服务器的连接。

    Android学习系列教程实例.pdf

    目录 Android 学习文档总结 ................... 1 DevDiv 推荐资源 ........................ 2 Windows 8 ..............................................................iOS .......................................

Global site tag (gtag.js) - Google Analytics