`
ponlya
  • 浏览: 164626 次
  • 性别: 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,代码混淆

    除了混淆,ProGuard还执行代码优化,例如删除无用的代码和数据结构,合并相似的类和方法,甚至优化字节码,从而减小APK或JAR文件的大小。优化后的代码在运行时可以更快地加载和执行。 **4. 压缩功能:** ProGuard会...

    ProGuard-java混淆加密

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

    混淆加密 proguard 5.3.3

    **混淆加密 ProGuard 5.3.3** 混淆加密是软件开发中的一种重要技术,用于保护应用程序源代码的安全,防止未经许可的逆向工程分析。ProGuard 是 Android 和 Java 开发中最广泛使用的混淆工具之一,它能对代码进行...

    proguard4.6 代码混淆器

    **ProGuard 4.6:专业Java代码混淆工具** 在Android开发中,代码安全和优化是至关重要的环节,而ProGuard 4.6正是这样一个工具,专为Java代码提供混淆、优化、压缩和预检查等功能。它能有效地保护你的应用程序源...

    java代码混淆器proGuard

    Java代码混淆器ProGuard是Java开发中用于保护和优化应用程序的重要工具。它的主要功能是对Java字节码进行混淆,使得代码难以被逆向工程解析,从而提高代码的安全性。混淆过程中,函数变量、类和方法名会被重命名为...

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

    **ProGuard**是一款广泛使用的Java代码混淆、优化和压缩工具,尤其在Android开发中起着至关重要的作用。它能够帮助开发者保护应用程序的源代码,防止反编译和篡改,同时也能减小程序体积,提高运行效率。ProGuard ...

    proguard-7.2.2.tar.gz

    DexGuard是ProGuard的商业版,专门针对Android平台进行了增强,提供了额外的安全特性,如加密代码、水印、调试防护等。这对于企业级应用尤其重要,因为它们通常需要更高的安全性和性能。 总结,ProGuard是Java和...

    proguard7.3.0

    ProGuard 7.3.0 是一款强大的Java代码优化、混淆和压缩工具,适用于各种Java应用程序,包括Android应用。此版本是ProGuard的最新更新,旨在解决从GitHub下载速度缓慢的问题,确保用户能够快速便捷地获取和使用该工具...

    如何混淆Android项目代码(ProGuard)防止反编译.rar

    因此,除了混淆,还应结合其他安全措施,如代码签名、加密数据、使用安全的网络通信协议等。 总结,混淆是提高Android应用安全的重要手段,ProGuard提供了强大的混淆能力。正确配置和使用ProGuard,结合适当的混淆...

    JAVA Proguard

    Proguard在处理Java代码混淆时,也需要考虑JNI(Java Native Interface)的使用,确保混淆后的Java代码仍能正确地调用C++代码。 总的来说,JAVA Proguard是Java开发者的重要工具,它在提高代码安全性、减小程序体积...

    Proguard6.0.1

    总之,ProGuard 6.0.1作为一款专业的加密混淆工具,对于任何希望保护其代码安全的开发者而言都是必不可少的。它不仅可以帮助减小程序大小,提升运行效率,更能有效防止代码被轻易反编译,为软件安全保驾护航。正确...

    Proguard 免费的class文件压缩、优化和混淆

    - **加密**:虽然Proguard不直接提供加密功能,但混淆可以视作一种轻量级的加密,使代码更难被理解和利用。 - **防反编译**:混淆使得反编译后的代码变得难以理解和复用,增加了代码的安全性。 **四、其他相关文件*...

    proguard(汉化版).rar

    加密方面,虽然ProGuard本身并不提供高强度的加密功能,但它可以通过与其他加密库配合使用,比如对关键数据进行加密存储,进一步提高应用的安全性。在Android开发中,通常会结合使用ProGuard和 DexGuard(Google为...

    Proguard最新版6.0.3

    ProGuard 可以通过删除未使用的代码、合并类和方法、内联代码等方式来优化字节码,从而减小应用的大小并提高运行速度。在6.0.3版本中,可能会包含对优化算法的改进,以更好地适应现代Java和Android应用的需求。 **3...

    对java jar包实现混淆加密

    总结,Java jar包的混淆加密是提升代码安全的重要手段,通过ProGuard等混淆工具和加密技术,可以有效降低源代码被逆向工程分析的风险。然而,安全是一个持续的过程,开发者应始终保持警惕,及时更新和优化保护策略。

    java 混淆、加密js代码

    Java混淆和加密JavaScript代码是保护Web应用程序源代码安全的重要手段,尤其是在公开发布或者与第三方共享时,能够防止恶意用户分析和篡改代码。本压缩包包含的资源专注于这个主题,让我们详细了解一下相关知识点。 ...

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

    示例代码通常包括混淆工具的配置文件(如proguard.conf)和加密工具的配置文件(如encryption.cfg),这两个文件中会定义混淆和加密的具体规则,例如保留特定的类或方法不被混淆或加密。 总之,对SpringBoot项目的...

    proguard 、使用说明

    在 Android 开发中,ProGuard 被广泛应用于保护应用源代码,避免逆向工程破解,同时也能减小应用的体积,提高运行效率。 ### 一、ProGuard 的主要功能 1. **代码优化**:通过删除无用的类、方法和字段,以及合并和...

    使用Proguard混淆Java源代码

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

    java 混淆工具proguard5.3.3

    DexGuard是GuardSquare公司为Android开发的高级混淆工具,它在ProGuard的基础上增加了对Dalvik虚拟机和Android特定功能的支持,如资源混淆、字符串加密等,提供更强大的安全防护。 7. **使用注意事项**: - 混淆...

Global site tag (gtag.js) - Google Analytics