ProGuard的作用:
1.创建紧凑的代码文档是为了更快的网络传输,快速装载和更小的内存占用.
2.创建的程序和程序库很难使用反向工程.
3.所以它能删除来自源文件中的没有调用的代码
4.充分利用java6的快速加载的优点来提前检测和返回java6中存在的类文件.
参数:
-include {filename} 从给定的文件中读取配置参数
-basedirectory {directoryname} 指定基础目录为以后相对的档案名称
-injars {class_path} 指定要处理的应用程序jar,war,ear和目录
-outjars {class_path} 指定处理完后要输出的jar,war,ear和目录的名称
-libraryjars {classpath} 指定要处理的应用程序jar,war,ear和目录所需要的程序库文件
-dontskipnonpubliclibraryclasses 指定不去忽略非公共的库类。
-dontskipnonpubliclibraryclassmembers 指定不去忽略包可见的库类的成员。
保留选项
-keep {Modifier} {class_specification} 保护指定的类文件和类的成员
-keepclassmembers {modifier} {class_specification} 保护指定类的成员,如果此类受到保护他们会保护的更好
-keepclasseswithmembers {class_specification} 保护指定的类和类的成员,但条件是所有指定的类和类成员是要存在。
-keepnames {class_specification} 保护指定的类和类的成员的名称(如果他们不会压缩步骤中删除)
-keepclassmembernames {class_specification} 保护指定的类的成员的名称(如果他们不会压缩步骤中删除)
-keepclasseswithmembernames {class_specification} 保护指定的类和类的成员的名称,如果所有指定的类成员出席(在压缩步骤之后)
-printseeds {filename} 列出类和类的成员-keep选项的清单,标准输出到给定的文件
压缩
-dontshrink 不压缩输入的类文件
-printusage {filename}
-whyareyoukeeping {class_specification}
优化
-dontoptimize 不优化输入的类文件
-assumenosideeffects {class_specification} 优化时假设指定的方法,没有任何副作用
-allowaccessmodification 优化时允许访问并修改有修饰符的类和类的成员
混淆
-dontobfuscate 不混淆输入的类文件
-printmapping {filename}
-applymapping {filename} 重用映射增加混淆
-obfuscationdictionary {filename} 使用给定文件中的关键字作为要混淆方法的名称
-overloadaggressively 混淆时应用侵入式重载
-useuniqueclassmembernames 确定统一的混淆类的成员名称来增加混淆
-flattenpackagehierarchy {package_name} 重新包装所有重命名的包并放在给定的单一包中
-repackageclass {package_name} 重新包装所有重命名的类文件中放在给定的单一包中
-dontusemixedcaseclassnames 混淆时不会产生形形色色的类名
-keepattributes {attribute_name,...} 保护给定的可选属性,例如LineNumberTable, LocalVariableTable, SourceFile, Deprecated, Synthetic, Signature, and InnerClasses.
-renamesourcefileattribute {string} 设置源文件中给定的字符串常量
Ant Example:
<!-- This Ant build file illustrates how to process applications,
by including ProGuard-style configuration options.
Usage: ant -f applications2.xml -->
<project name="Applications" default="obfuscate" basedir="../..">
<target name="obfuscate">
<taskdef resource="proguard/ant/task.properties"
classpath="lib/proguard.jar" />
<proguard>
<!-- Specify the input jars, output jars, and library jars. -->
-injars in.jar
-outjars out.jar
-libraryjars ${java.home}/lib/rt.jar
<!-- -libraryjars junit.jar -->
<!-- -libraryjars servlet.jar -->
<!-- -libraryjars jai_core.jar -->
<!-- ... -->
<!-- Save the obfuscation mapping to a file, and preserve line numbers. -->
-printmapping out.map
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
<!-- Preserve all annotations. -->
-keepattributes *Annotation*
<!-- Preserve all public applications. -->
-keepclasseswithmembers public class * {
public static void main(java.lang.String[]);
}
<!-- Preserve all native method names and the names of their classes. -->
-keepclasseswithmembernames class * {
native <methods>;
}
<!-- Preserve the methods that are required in all enumeration classes. -->
-keepclassmembers class * extends java.lang.Enum {
public static **[] values();
public static ** valueOf(java.lang.String);
}
<!-- Explicitly preserve all serialization members. The Serializable
interface is only a marker interface, so it wouldn't save them.
You can comment this out if your library doesn't use serialization.
If your code contains serializable classes that have to be backward
compatible, please refer to the manual. -->
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
static final java.io.ObjectStreamField[] serialPersistentFields;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
<!-- Your application may contain more items that need to be preserved;
typically classes that are dynamically created using Class.forName -->
</proguard>
</target>
</project>
- 浏览: 194338 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (155)
- oracle (5)
- jms (1)
- 配置 (1)
- InstallAnywhere (1)
- 操作系统 (2)
- 测试 (2)
- linux (22)
- cloud (2)
- java (21)
- jvm (3)
- nsql (1)
- spring ibatis atomikos (1)
- maven (8)
- zookeeker (2)
- spring (4)
- 分布式 (3)
- mina (2)
- 空间 (1)
- OpenSSL (2)
- android (6)
- github (1)
- 支付 (1)
- php (4)
- ant (1)
- 数据库 (1)
- mysql (18)
- pki (1)
- js (3)
- c# (1)
- extjs (1)
- 网络 (1)
- pinyin4j (1)
- selenium (1)
- tomcat (1)
- yjp (1)
- xss (1)
- xsrf (1)
- 系统安装光盘制作 (2)
- kindeditor (1)
- vsftp (1)
- ueditor (2)
- netty (3)
- servlet (1)
- volatile (1)
- ios (1)
- zookeeper (2)
- jmx (1)
- 序列化 (1)
- 蓝牙 (3)
- easyui (1)
- ehcache (1)
- cas (2)
- antx (1)
- diamond (1)
- http (2)
- logback (1)
- storm (1)
- windows (1)
最新评论
-
bihongliang:
你好,博主,我的系统是win10 64位的,用了64位的 bl ...
Eclipse + Java + BlueCove + WIN/MAC 蓝牙开发
发表评论
-
如何在TOMCAT下指定JDK的路径
2015-09-23 14:32 9251,修改bin文件夹下面的catalina.bat文件,把如下 ... -
java资源集合
2015-03-31 13:11 762这里搜集了用来构建应用程序的工具。 Apache Ma ... -
深入探讨 Java 类加载器
2014-11-26 18:13 484http://www.ibm.com/developerwo ... -
serialVersionUID的作用
2014-11-21 17:32 716简单来说,Java的序列 ... -
在UltraEdit中使用正则表达式
2014-10-11 14:42 454在UltraEdit中使用正则表达式 正则表达式 (Ult ... -
java 8stream
2014-10-10 16:54 766上篇文章Java8初体验(一)lambda表达式语法比 较 ... -
并发实战题
2014-10-10 13:50 364实现一个流控程序。控制客户端每秒调用某个远程服务不超过N次 ... -
CopyOnWriteArrayList
2014-10-10 11:01 695除了加锁外,其实还有 ... -
java动态加载
2014-10-09 22:07 892第一部分:Java虚拟 ... -
分布式事务处理
2014-10-09 09:41 720分布式事务处理( Distributed Transacti ... -
Checkmarx CxEnterprise企业版静态源代码扫描管理方案
2014-08-14 14:59 2575一、Checkmarx CxEnterprise简介 ... -
Java EE 6.0 的 Cookie 类已经有设置 HttpOnly 的方法
2014-08-13 16:39 835一般的Cookie都是从document对象中获得的,现在浏 ... -
java.lang.OutOfMemoryError: PermGen space解决方法
2014-08-06 23:19 811公司的站点是跑在jboss ... -
java文件下载的文件名乱码问题的解决
2014-07-22 00:35 678在Java的web开发中,文件下载功能的文件名文件名乱码问题 ... -
java文件下载的文件名乱码问题的解决
2014-07-16 16:33 1044在Java的web开发中,文件下载功能的文件名文件名乱码问 ... -
java 二维码
2013-05-31 13:16 783package com.wxthtf.iot.common; ... -
Ant编译utf-8非法字符:/65279 解决方法
2013-05-30 10:15 1069这是一个很郁闷的问题,碰到这问题百度又不能直接搜索“&am ... -
JAVA方法中Bridge修饰符
2013-05-09 11:48 912前段时间研究spring中的 ... -
oracle调用java
2013-04-19 14:40 849前提是数据库上需要安装java虚拟机(JVM),使用下面的语 ... -
jetty6 Continuation
2013-03-18 18:09 893http://langyu.iteye.com/blog/7 ...
相关推荐
Java混淆工具ProGuard是Java开发中的一个重要组件,主要用于保护应用程序的源代码,防止逆向工程分析,同时也可优化代码,减小程序体积。在Android开发中,它被广泛应用于APK的发布过程,确保代码安全并提高运行效率...
Eclipse 是一个基于 Java 的集成开发环境(IDE),ProGuard 是一个 Java 类库和应用程序的保护和优化工具。通过结合使用 Eclipse 和 ProGuard,可以对 Java 应用程序进行混淆、压缩和优化,从而提高应用程序的安全性...
java代码混淆工具 简单使用docx 字典文件 生成的配置示例
Java代码混淆工具ProGuard是Java开发者在发布应用时常常使用的一种工具,它的主要目的是保护代码知识产权,防止未经授权的反编译和抄袭。在本压缩包文件"proguard-7.0.0.zip"中,包含了ProGuard的最新版本7.0.0,这...
6、proguard混淆首先得根据自己工程具体情况 来决定,哪些类需要混淆,哪些 类不能混淆,对包名、类名、方法名、参数名、变量名等其它信息 如何处理 可以通过参数 配置。 7、别忘记加上参数 printmapping obf.map...
Java代码混淆器ProGuard是Java开发中用于保护和优化应用程序的重要工具。它的主要功能是对Java字节码进行混淆,使得代码难以被逆向工程解析,从而提高代码的安全性。混淆过程中,函数变量、类和方法名会被重命名为...
**ProGuard**是一款广泛使用的Java代码混淆、优化和压缩工具,尤其在Android开发中起着至关重要的作用。它能够帮助开发者保护应用程序的源代码,防止反编译和篡改,同时也能减小程序体积,提高运行效率。ProGuard ...
ProGuard是一款免费的Java类文件压缩器、优化器和混淆器。它能发现并删除无用类、字段(field)、方法和属性值(attribute)。它也能优化字节码并删除无用的指令。最后,它使用简单无意义的名字来重命名你的类名、...
Java代码混淆工具ProGuard是Java开发中用于保护和优化应用程序的重要工具。它的主要功能是对Java字节码进行混淆、优化、缩小和预校验,从而提高应用的安全性和性能。ProGuard 4.5.1是该工具的一个版本,发布于2010年...
proguard混淆打包工具proguard混淆打包工具proguard混淆打包工具
java 源码加密 混淆,proguard 配置文件,很详细,经测试可以用
**开发J2ME程序的混淆器ProGuard 3.4详解** 在移动应用程序开发领域,J2ME(Java 2 Micro Edition)曾是为小型设备如手机开发软件的主流平台。然而,随着技术的发展,安全问题变得越来越重要,尤其是对于开源的Java...
**ProGuard工具包详解——Java代码混淆** 在Java开发中,为了提高应用程序的安全性和保护知识产权,开发者常常会使用一种称为“代码混淆”的技术。ProGuard是Android和Java平台上的一个强大的开源工具,它能实现...
经典的Java代码混淆工具,可以混淆class,jar类型的文件,防止被反编译,对需要进行源码保护的代码很有用。
### Android Java代码混淆工具:ProGuard的深度解析与实践 #### 概述 在软件开发领域,代码混淆是一项重要的安全措施,特别是在移动应用开发中,它能够保护源代码不被轻易逆向工程,从而增强应用的安全性。在...
最新混淆工具,支持springboot jdk18 ,内有示例及ant,可以打包生成jar包后直接生成加密包
很好用的一个代码混淆工具,混淆后可以防止被反编译。很容易用。
最新混淆包proguard6.0.3
代码混淆工具ProGuard是Java平台上的一个强大工具,主要用于优化、缩小和混淆Java字节码。在Android开发中,它通常被用来保护应用程序的源代码,防止未经授权的反编译和逆向工程。ProGuard 7.2.2是该工具的一个版本...
代码混淆攻击 可集成于ECLIPSE 使用非常方便 J2ME程序经常要用到混淆