`
hold_on
  • 浏览: 455715 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ProGuard混淆代码学习笔记 之 代码混淆指令

 
阅读更多

详细的proguard配置可以查看  http://proguard.sourceforge.net/#manual/usage.html

这个我也没看完,就看了些项目需要的指令。

那就附上网上的一些资料

 

ProGuard是一个免费的java类文件压缩,优化,混淆器.它探测并删除没有使用的类,字段,方法和属性.它删除没有用的说明并使用字节码得到

 

最大优化.它使用无意义的名字来重命名类,字段和方法.

 

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} 设置源文件中给定的字符串常量

因为我们开发的是webwork+spring+hibernate的架构的项目,所有需要很详细的配置。(经过n次失败后总结)

Example:

-injars <project>.jar

-outjars <project>_out.jar

-libraryjars <java.home>/lib/rt.jar

-libraryjars <project.home>/webroot/WEB-INF/lib/webwork.jar

.......

# 保留实现Action接口类中的公有的,友好的,私有的属性 和 公有的,友好的方法。其它的全部压缩,优化,混淆。

# 因为配置文件中的类名是一个完整的类名,如果经过处理后就有可能找不到这个类。

# 属性是jsp页面所需要的,如果经过处理jsp页面就无法得到action中的数据。

-keep public class * implements com.opensymphony.xwork.Action{

public protected private <fields>;

public protected <methods>;

}

# 保留实现了Serializable接口类中的公有的,友好的,私有的成员(属性和方法)

# 这个配置主要是对应实体类的配置。

-keep public class * implements java.io.Serializable{

public protected private *;

}

 

链接:http://blog.sina.com.cn/s/blog_6799566701013ysi.html

这里要注意的一点是: 单写一个-keep 并不能将类及其属性方法全部过滤掉,

比如:-keep public class * extends android.app.Activity;

需要写全:

-keep public class * extends android.app.Activity {

  void installApk(java.lang.String);

}

这样才能将installApk方法过滤掉(不混淆)

 

分享到:
评论

相关推荐

    SpringBoot + proguard+maven多模块实现代码混淆

    基于SpringBoot+Maven多模块工程利用proguard组件实现代码混淆的代码demo,代码清晰完整,导入idea或eclipse即可运行。 使用 proguard 混淆代码只能增加阅读和理解的难度, 并不能百分百保证代码安全。常用的应用...

    通过proguard5.2.1代码混淆工具和简单说明

    本实例使用的是把web项目中的源码(src)所有文件打包成jar文件,使用proguard混淆后再把jar文件以及jar解压后的混淆class类文件替换原war项目的相应位置即可。 混淆过程中需要使用keep参数来保持原有一些属性、注解...

    springboot工程(单个maven工程)利用proguard实现代码混淆

    基于springboot搭建一个简单案例,利用proguard插件实现代码混淆,增加源代码的阅读和理解的难度, 并不能百分百保证代码安全。常用的应用场景是项目需要部署到客户机器上,一定程度上防止代码泄露。 ProGuard 是一个...

    proguard混淆打包工具

    proguard混淆打包工具proguard混淆打包工具proguard混淆打包工具

    修改Proguard混淆规则,自定义字符集

    在Android应用开发中,为了保护代码安全和优化应用性能,我们常常会使用Proguard工具进行代码混淆、优化和压缩。本文将深入探讨如何修改Proguard混淆规则,以及如何自定义字符集,以满足特定需求。 Proguard是...

    Proguard混淆Web项目(Spring+Struts2+Mybatis)

    1. **代码混淆**:Proguard的主要功能之一就是混淆代码,即将类名、方法名和变量名转换为难以理解的短名称,以此来防止逆向工程,提高代码的安全性。在描述中提到的映射map文件,记录了混淆前后的名称对应关系,这...

    实现maven管理的Javaweb项目的proguard代码混淆功能

    本文将深入探讨如何在Maven管理的Java Web项目中集成ProGuard工具来实现代码混淆功能,以及在过程中可能遇到的问题及解决方案。 首先,让我们了解什么是ProGuard。ProGuard是一个开源的Java字节码混淆器、优化器和...

    解决proguard混淆报错-Proguard5.1

    proguard混淆jar包提示错误:Unknown verification type [*] in stack map frame 解决方案:找到proguard源码中proguard\src\proguard\classfile\ClassConstants.java类,然后修改ATTR_StackMapTable的值,将原来的...

    springboot工程(单个maven工程)利用proguard实现代码混淆 java demo案例

    在Java开发中,尤其是对于发布到生产环境的项目,代码安全性和性能优化是至关重要的环节。Spring Boot作为Java领域广泛使用...通过学习这个案例,你可以了解到如何在实际项目中应用ProGuard,提升代码的安全性和性能。

    Java防编译技术---proguard混淆器

    Java防编译技术是开发过程中保护源代码安全性和技术保密性的重要手段,而ProGuard混淆器正是其中的关键工具。ProGuard是一款开源的Java字节码混淆、优化、压缩和预校验工具,它能帮助开发者有效地减少应用的体积,...

    一步步教你使用Proguard混淆Java源代码 .docx

    使用 Proguard 混淆 Java 源代码 Proguard 是一款功能强大且广泛使用的 Java bytecode 混淆工具,它可以保护 Java 代码免受反编译和逆向工程的攻击。下面将一步步指导如何使用 Proguard 混淆 Java 源代码。 1. ...

    使用Proguard混淆Java源代码

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

    proguard混淆步骤操作流程

    ProGuard是一款强大的Java字节码处理工具,常用于Android应用的代码混淆、优化、压缩和预校验。在开发过程中,为了保护代码安全,避免反编译,开发者通常会使用ProGuard进行混淆,使得源代码变得难以理解。下面将...

    ant proguard 混淆编译 之Eclipse-Idea

    在Android开发中,为了保护应用的安全性和优化代码,开发者通常会使用ProGuard工具进行混淆编译。本篇文章将聚焦于如何在Eclipse和IntelliJ IDEA(Idea)这两个不同的集成开发环境中配置并使用ProGuard,以实现对Ant...

    J2EE-web工程ProGuard代码混淆

    【J2EE-web工程ProGuard代码混淆】是Java开发中的一种安全实践,旨在保护应用程序的源代码不被轻易反编译和理解。ProGuard是一款强大的Java字节码混淆、优化、压缩和预校验工具,它能将Java字节码转换成更难阅读和...

    proguard4.7代码混淆器使用详细说明(自撰)

    自己写的proguard4.7代码混淆器使用详细说明,之前在网上找了一大堆都还是不会用,或不全,研究了一天,终于达到自己想要的结果,在此总结下,写成文档,一边以后需要,也供大家学习学习,工具包就不上传了,网上一...

    proguard,代码混淆

    ProGuard是一款功能强大的开源混淆工具,由Eric Lafortune开发,它不仅提供代码混淆功能,还包含了优化、压缩和预校验等特性,使得应用程序更加小巧、安全且运行更高效。 **1. 代码混淆:** 代码混淆是将源代码中的...

    Android 4.0及以上版本 ProGuard 代码混淆

    ### Android 4.0 及以上版本 ProGuard 代码混淆详解 #### 一、ProGuard 简介 ProGuard 是一款广泛应用于 Android 开发中的代码混淆工具,它能够通过删除未使用的类、字段、方法等,从而缩小 APK 的体积,并提高...

    java代码混淆工具proguard及教程讲解

    java代码混淆工具 简单使用docx 字典文件 生成的配置示例

Global site tag (gtag.js) - Google Analytics