转:ProGuard 常见命令备份

转: https://my.oschina.net/sunyh/blog/30359

#-dontshrink #不压缩,减少jar的大小一般都压缩掉,为了增加反编译的难度也可以不压缩 

  

#-dontobfuscate #不混淆输入的类文件  这个是默认不混淆的,所以需要注释 

  

#-dontusemixedcaseclassnames #混淆时不会产生形形色色的类名,没有发现啥作用 

  

-overloadaggressively #混淆时应用侵入式重载  名字都变的很长了 需要 

  

#-useuniqueclassmembernames #把混淆类中的方法名也混淆了,keep类中一些不需要keep的类的方法名也混淆了,需要 

  

-allowaccessmodification #优化时允许访问并修改有修饰符的类和类的成员, 混淆后的类名还会改变地方,到其他包中  需要,所有被混淆的都到一个包去,不需要保留原来的结构 

-repackageclasses#混淆的类 重新到另外一个包 需要混淆才能出现abc之类名字的类 

 

 

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

 

 

 

为了增加混淆的难度,可以在 

java -jar progurad.jar @application.pro 后再加 -classobfuscationdictionary ./dictionaries/windows.txt 

即java -jar progurad.jar @application.pro -classobfuscationdictionary ./dictionaries/windows.txt 

这样生成的类名都是window系统命名系统严令禁止使用的文件名,反编译时就更增加难度了

时间: 2024-10-23 08:49:48

转:ProGuard 常见命令备份的相关文章

linux常见命令的列表

这是一个linux常见命令的列表. 那些有• 标记的条目,你可以直接拷贝到终端上而不需要任何修改,因此你最好开一个终端边读边剪切&拷贝. 所有的命令已在Fedora和Ubuntu下做了测试 命令 描述 • apropos whatis 显示和word相关的命令. 参见线程安全 • man -t man | ps2pdf - > man.pdf 生成一个PDF格式的帮助文件   which command 显示命令的完整路径名   time command 计算命令运行的时间 • time c

用命令备份你的Win7/Win8/Win8.1系统教程

用一句命令备份你的操作系统. 解决方案: 提示:请提示备份您的重要文件以防止不必要的损失. 1.压缩一个磁盘. 2.WIN+X,选择以管理员身份(A)运行 2.执行命令recimg /createimage R :\WIM  (你设定的什么盘符命令就改成什么盘符) 得到映像R:\WIM\CustomRefresh.wim 完成以后可以不需要安装介质就能直接进行系统刷新和重置,系统环境和RE环境均可执行刷新和重置. 系统和Office无需重新激活,刷新还保留文档和应用,重置不保留文档和应用. Cu

利用COPY命令备份cisco路由器配置文件

在路由器的 配置过程中,经常会用到COPY这个命令.下面我们就为大家介绍如何使用COPY命令备份配置文件,以及如何从TFTP服务器拷贝备份配置文件. 498)this.w idth=498;' onmousewheel = 'javascript:return big(this)' height=191 alt="" src="http://new.51cto.com/files/uploadimg/20081005/113453363.jpg" width=400

MySQL使用命令备份和还原数据库_Mysql

数据库在使用当中都会有数据库备份工作,当数据库发生严重错误无法启动,或者数据丢失时可以及时有效地恢复数据.文章简单介绍如何备份和还原MySQL数据库. 备份数据库 使用mysqldump命令备份数据库 复制代码 代码如下: # 如果要将game数据库进行备份: mysqldump -u root -p game > game_backup.sql # 如果希望备份所有的数据库: mysqldump -u root -p --all-databases > all_backup.sql 还原数据

Netsh命令备份/恢复服务器网络设置

随着http://www.aliyun.com/zixun/aggregation/34935.html">教育信息化的不断 深入发展,网络已成为广大教育工作者日常工作中不可 缺少的辅助手段,这就要求 网络管理员能够保障网络安全 稳定地运行,在出现故障时能够快速地进行恢复.在网络故障恢复过程中,尤为重要的是服务器网络设置的恢复.以下,笔者就谈一谈在日常网络 管理工作中如何利用Netsh命令备份和恢复服务器网络设置. Netsh是Windows 2000/XP/2003操作系统提供的命令行脚

oracle 10g数据库采用批处理命令备份表

今天看一朋友在做数据库备份时采用批处理命令备份表 ,在在oracle 10g中是多么方便的一件事情哦,下面我们来看看. 说明: 1.我用的是oracle 10g的数据库,导出的是scott用户下的emp和dept表: 2.导出的备份文件我放在 D:pantpbackup 3.数据库scott用户的密码为orcl: 4.数据库的SID为ORCL; 5.数据库导出的备份文件名为daochu加上今天的日期,比如 daochu_20120725.dmp 5.我的oracle安装路径是D盘的根目录:  

mysql 常见命令和学习心得_Mysql

一. PHP对连接数据库的步骤: 1 与数据库建立连接: $conn = mysql_connect("localhost:3306","username","pass"); 三个参数:第一个是数据库服务器主机名及端口localhost:3306,如果主机名或端口缺省将使用php.ini中设定的值,后面两个分别为连接数据库服务器的用户名和口令,同样缺省为php.ini中设定的值. 2 提交查询语句: a. 使用函数mysql_select_db(

unix中利用Find命令备份根文件系统

在Unix操作系统中有很多命令可以用来备份文件.但是Unix操作系统中根文件系统是一种比较特殊 的文件.通常情况下对这类文件进行备份的话,必须要卸载其他文件系统.因为根文件系统是其他文件 系统的祖宗,如果不卸载的话,会同时备份其他文件系统中的文件.但是如果先卸载其他文件系统再进 行备份的话,那么就会很麻烦.为此在find命令中提供了一个很有用的参数,可以帮助我们实现这个功 能. 一.根文件系统备份的重要性及备份的难点. 当系统发生崩溃时,虽然可以通过重新安装操作系统来恢复.但是这个工作量很大,因

第二天 Linux常见命令

复习: 判断题 1.fedora.redhat.Centos.suse.ubuntu.都是常见的linux 2./分区.swap分区./boot分区都是linux的必须分区 3./dev/sda5在linux中代表第一块硬盘的第五个分区 第一个逻辑分区 4./etc/目录是linux系统保存配置文件的目录 5.mkdir -p /11/22/33/44 会递归在家目录下建立一串目录 目录: 第三章 Linux常用命令 一 文件操作命令 二 文件和目录都能操作的命令 三 权限管理 四 帮助命令 五