proguard 使用

proguard 使用

Proguard用于混淆java代 码,使代码变为由难懂的,无规律的字符命名的各种方法和类,保护自己的劳动成果。个人认为proguard混淆纯java项目比较理想,比如j2me的MIDLET,如果项目是web项 目,特别是使用Struts+Spring+Hibernate架构的,由于牵涉到很多需要反射的类,所有不适合把整个项目进行混淆。

可以从这里下载到最新的Proguard源代码和API文档。下载的lib文件夹内包含3个jar包,

proguard.jar是proguard的主程序,proguardgui.jar为图形界面,用这个可以很方便的生成proguard的配置文件,Retrace为反追踪。

Proguard的具体功能和效果就不多 说,网上有很多介绍,主要说下图形界面的各项操作,通过图形界面生成Proguard混淆前的配置文件。

java -jar proguardgui.jar [-nosplash][configuration_file]

-nosplash参数:运行ProGuard时不显示开头动画。

configuration_file: ProGuard运行时加载的配置文件(如果你已经有一个通用的Proguard的配置文件,在这里调用,再针对项目做些修改)。

Input/Output标签:

这里选择需要混淆的代码目录和输出混淆后代码的目录以及项目所有需要的lib包。需混淆的代码可以已jar、war、ear、zip等格式打包,或者直接指定代码目录(此时注意要指定到代码的最上成package所在目录)。

“Add Input”添加需要混淆的代码。

“Add Output”指定输出路径和格式

“Edit”编辑设定

“Filter”过滤不需要的文件和包

“Remove”删除不需要的文件和包

“Move Up”“Move Down”将设定移动显示位置

“Move to libraries”移动到项目所需要的lib中

“Move to program”移动到项目中

下部的“Add”为添加项目所需要的lib包,如果是web项目把j2ee包也添加到lib中。

Shrinking、Optimization标签:

Proguard可以压缩和优化代码,将一些无用 类、字段和方法删除和优化代码。这里就不多说,

主要解释下Obfuscation标签。

“obfuscate”选上混淆机制才可用。

“Print mapping”输出映射文件,混淆前后的类名、方法名,属性名的对照。

“Apply mapping”应用映射文件,可以指定混淆后的类名、方法名,属性名。

“Obfuscation dictionary”混淆字典,指定混淆使用的字符。

“Overlord aggressively”优先重载

“Use unique class member names”使用唯一的类成员名称

“Default package”默认包名

“Use mixed-case class names”使用混合的类名,这样不同的类混淆后将使用同一类名。

“Keep attributes”指定需要保留属性的资源文件

“Rename SourceFile attribute”重命名资源文件属性

“Keep names”保留的名称

“Native method names”本地方法名称

“.class method names”指定需要保存方法名称的类

“Keep additional class names and class member names”保留(不需要混淆)的类名和成员名

点击“Add”或“Edit”编辑需要保留的类

Comments文本域可以对当前条目加上可选的注释。这个注释将标识列表中的这个条目并作为注释出现在配置文件中

“Keep classes and class members”保留类名和成员名

“Keep class members only”只保留成员名

“Keep classes and class members, if members are present”

“Access”访问修饰符,指定需要保留类的修饰符

“Class”指定类名,可以用“*”通配符进行指定比如“*Number*”

“Extends/implements class”继承和实现的类,此处需要指定类的完整路径,包括包名。

“Class members”要保留的成员

“Add field”添加需要保留的属性,通过指定修饰符,类型和名称来配置。

“Add method”添 加需要保留的属方法,通过指定修饰符,返回类型和名称来配置

Information(参数信息)标签:

“Consistency and correctness”连贯性和正确性

“Print seeds”打印日志

“verbose”详细信息

“Warn about missing libraries”缺少类库时发出警告

“Ignore warnings about missing libraries”忽略缺少类库的警告,有时缺少某些类库也可以混淆,Proguard提倡先消除所有的警告,然后混淆。

“Skip non-public library classes”跳过所有非公有类,加快加载lib速度。

“Skip non-public library class members”跳过所有非共有方法,加快解析lib速度

“Why are u keeping”

Process标签:

“View configuration”查看配置

“Save configuration”保存配置

Retrace(反追踪)标签

简单说下keep参数,这个是设定要保留不参与混淆的类和成员。

keepclass_specification保留指定的类和成员名称和内容

keepclassmembersclass_specification只保留指定的类成员名称和内容

keepclasseswithmembersclass_specification

keepnamesclass_specification保留类和成员名称,混淆内容

keepclassmembernamesclass_specification只保留成员名称,混淆内容

keepclasseswithmembernames class_specification

在使用过程中,我比较 喜欢建立几个抽象类,Keep,KeepClassMembers

KeepClassesWithMembersKeepNamesKeepClassMemberNames

KeepClassesWithMemberNames,把需要混淆的核心代码单独打包,需要保留特定属性的类分别继承各个方法,这样设定混淆配置时就比较容易。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ProGuard是一个Java字节码混淆、压缩和优化工具,它可以帮助你保护你的Java应用程序免受逆向工程和代码反编译的威胁。下面是一个简单的ProGuard使用教程: 1. 下载和安装ProGuard:你可以从ProGuard的官方网站(https://www.guardsquare.com/proguard)上下载ProGuard的最新版本。下载后,解压缩文件到你的计算机上。 2. 配置ProGuard:在ProGuard的安装目录中,你会找到一个名为`proguard.cfg`的配置文件。打开该文件,你可以配置一些选项来指定要混淆、压缩和优化的类、方法和字段。在文件中,你可以添加以下选项: - `-injars`:指定输入的jar文件或目录。 - `-outjars`:指定输出的jar文件。 - `-libraryjars`:指定依赖库的jar文件。 - `-dontobfuscate`:指定不需要混淆的类。 - `-dontoptimize`:指定不需要优化的类。 - `-dontnote`:指定不需要显示note信息的类。 - `-dontwarn`:指定不需要显示警告信息的类。 除了上述选项,你还可以根据需要添加其他选项。配置完成后,保存文件。 3. 运行ProGuard:在命令行中,进入ProGuard的安装目录,然后执行以下命令: ``` java -jar proguard.jar @proguard.cfg ``` 这将启动ProGuard使用之前配置的`proguard.cfg`文件进行混淆、压缩和优化。 4. 查看输出结果:ProGuard将生成一个混淆后的jar文件,其中包含混淆、压缩和优化后的类。你可以使用Java反编译工具(如JD-GUI)来查看反编译后的代码,以验证混淆效果。 请注意,ProGuard使用可能会导致一些副作用,例如某些代码可能会被错误地优化或删除。在使用ProGuard之前,请务必备份你的代码,并进行充分的测试和验证。 此外,ProGuard还可以与构建工具(如Maven或Gradle)集成,以便在构建过程中自动运行ProGuard。你可以查阅ProGuard文档和相应构建工具的插件文档来了解更多详细信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值