ProGuard 工具的使用

最近工作中需要使用到 Proguard 这个加混淆的工具,现在总结一下这个工具的使用方法。
proguard 官方网站地址是
http://proguard.sourceforge.net/
由于proGuard 这个工具配置信息比较多,所以有时间在使用的时候一定要仔细阅读一下
http://proguard.sourceforge.net/#manual/introduction.html
这个页面的内容,里面会很多配置的参数有详细的说明
下载的地址在
http://sourceforge.net/projects/proguard/files/
如下图

目前的版本到 5.0 beta版,但是稳定版本是在 4.11 版本,将5.0 beta版本下载以后
在解压缩下的文件夹下应该就有lib这个文件夹了,如果没有的话就需要自己编译一下,具体编译方法,需要到build文件夹下,执行一下 build.sh 这个sh文件即可

找到一个 jar包,然后进入到lib文件,发现这下面有3个jar包,分别是

proguard.jar   命令行的jar包,需要结合 .pro 文件作为配置文件来执行相应的命令
proguardgui.jar  显示界面的jar包,可以图形化的生成混淆的jar包,具体运行方法   执行项目目录下的 bin/proguardgui.sh 这个文件,出现图形化界面,然后再一步一步的操作
retrace.jar   这个暂时没有看

现在测试一下 proguard.jar 这个jar包的使用方法,在项目目录下有个example 这个文件夹,里面有很多.pro 文件,其实就是对于要生成的各种混淆的程序的配置文件,目前比较火的肯定是android 的应用加混淆了,现在android应用加混淆的功能本身已经集成到 adt中了,但是如果我们撇开adt 直接使用 proguard.jar 混淆jar包。

一 首先你需要有一个 jar包

android apk应用编译完成的对于虚拟机可执行的文件是dex文件,这里需要使用一个 dex2jar的工具将dex转换成 jar包,再在lib这个文件夹下面建立一个bin文件夹和 libs文件夹,然后将前面用dex2jar 生成的jar包拷贝到 bin这个文件夹下面,然后将这个jar包解压缩到一个bin文件下的一个
名字为 classes的文件夹

二 将项目目录下的example文件夹下的 android.pro 拷贝到 lib目录下
前面为何要将要混淆的jar包解压缩到 classes这个文件夹下呢,打开android.pro这个文件后就知道答案了

-injars  bin/classes                                   //表示要混淆的classes文件夹
-injars  libs                                               //表示混淆的classes文件夹需要引用的外部libs,其是也是一个一个jar包
-outjars bin/classes-processed.jar                     //输出的混淆后的jar包

表示这个dex依赖的android.jar包,这个要根据你编译这个dex使用的sdk来选择相应的外部jar包的
-libraryjars /root/android/adt-bundle-linux-x86_64-20131030/sdk/platforms/android-19/android.jar
显示出来混淆的过程文件的选项
-printmapping bin/classes-processed.map
后面有很多跟android 应用相关的 混淆规则,这里不再一一赘述了

三 执行命令
[email protected]:/home/Proguard/proguard5.0beta2/lib# java -jar proguard.jar  @android.pro
ProGuard, version 5.0 beta2
Reading program directory [/home/Proguard/proguard5.0beta2/lib/bin/classes]
Reading program directory [/home/Proguard/proguard5.0beta2/lib/libs]
Reading library jar [/root/android/adt-bundle-linux-x86_64-20131030/sdk/platforms/android-19/android.jar]
Preparing output jar [/home/Proguard/proguard5.0beta2/lib/bin/classes-processed.jar]
  Copying resources from program directory [/home/Proguard/proguard5.0beta2/lib/bin/classes]
  Copying resources from program directory [/home/Proguard/proguard5.0beta2/lib/libs]
在 /home/Proguard/proguard5.0beta2/lib/bin/ 文件夹下面看,出现加过混淆的jar包 如下图

时间: 2024-10-16 04:42:37

ProGuard 工具的使用的相关文章

在Eclipse上打包并使用Proguard工具混淆jar包

近期由于工作须要,学习到了Android jar包的打包与混淆. 之前觉得还是非常easy的,可是自己深入研究下,发现还是有一些东西须要注意的,并且自己也踩了一些坑,在这里写下供同僚们借鉴借鉴. 转载请注明: http://blog.csdn.net/aloh_a/article/details/50942751 怎样打包 这里我以eclipse 打包为演示样例,假设有朋友是用Andorid Studio开发的话.恕我有点out了. 选择你的项目,右键–>Export 选择JAVA分类项–>J

ProGuard工具使用

ProGuard工具通过移除未使用代码和使用语义模糊的名字重命名类.成员变量及方法, 从而实现减小.优化和混淆应用程序代码. 使用ProGuard工具后, 会得到一个更小的.apk文件, 并且使得逆向工程更加困难. 因为ProGuard使得应用程序的逆向工程更加困难, 所以当应用程序用到了对安全很敏感的特性时, 就有必要使用ProGuard工具了. ProGuard工具集成在Android的编译系统中, 所以不需要人工调用它. 只有当应用程序以release模式编译时,ProGuard工具才会

Eclipse与Android源码中ProGuard工具的使用

由于工作需要,这两天和同事在研究android下面的ProGuard工具的使用,通过查看android官网对该工具的介绍以及网络上其它相关资料,再加上自己的亲手实践,算是有了一个基本了解.下面将自己的理解和认识简要的做个笔记,有异议或者不解的,可以直接留言. 什么是ProGuard工具? ProGuard是android提供的一个免费的工具,它能够移除工程中一些没用的代码,或者使用语义上隐晦的名称来重命名代码中的类.字段和函数等,达到压缩.优化和混淆代码的功能.具体来说,使用ProGuard工具

Android开发实践:利用ProGuard进行代码混淆

由于Android的代码大都是Java代码,所以挺容易被反编译的,好在Android ADT为我们集成了混淆代码的工具,一来可以混淆我们的代码,让程序被反编译后基本看不懂,另外还能起到代码优化的作用.发布项目前,建议打开Android的代码混淆功能. Android ADT主要通过ProGuard工具来提供代码混淆,网上也有挺多博客文章讲这个的,但感觉很多都介绍得太过于复杂,这里我就以问答的方式来更加简洁地介绍下ProGuard吧. 1. ProGuard是什么 ProGuard是一个工具,用来

Android - 混淆jar包 ProGuard GUI 使用方法

混淆jar包 ProGuard GUI 使用方法 本文地址:http://blog.csdn.net/caroline_wendy 为了保证java代码可移植性和隐秘性,我们需要把java代码生成jar包,在使用ProGuard进行混淆: 但为了让其可以使用,我们应该保证代码接口的可读性,即保留类名和public方法名: 1. 下载ProGuard工具 http://sourceforge.net/projects/proguard/files/ 2. 使用ProguardGUI工具 进入bin

用Proguard进行Android代码混淆

在实际的开发成产品apk的发布过程中,我们经常会使用到代码混淆技术.不过在讲解如何进行代码混淆之前,我先跟大家演示一下反编译的过程,这样才能让大家明白为什么需要进行代码混淆. 一.代码反编译 1.准备工作 首先我们准备好一个项目的apk文件(未进行混淆打包).dex2jar工具(下载地址:http://code.google.com/p/dex2jar/).jd-gui工具(下载地址:http://jd-gui.softpedia.com/). 2.获取CodeMixTest.apk中的clas

Proguard进行Android代码混淆

在实际的开发成产品apk的发布过程中,我们经常会使用到代码混淆技术.不过在讲解如何进行代码混淆之前,我先跟大家演示一下反编译的过程,这样才能让大家明白为什么需要进行代码混淆. 一.代码反编译 1.准备工作 首先我们准备好一个项目的apk文件(未进行混淆打包).dex2jar工具(下载地址:http://code.google.com/p/dex2jar/).jd-gui工具(下载地址:http://jd-gui.softpedia.com/). 2.获取CodeMixTest.apk中的clas

Android Proguard使用技巧

1.混淆后解码 ProGuard运行结束后,输出以下文件: dump.txt :描述.apk文件中所有类文件间的内部结构 mapping.txt:列出了原始的类,方法和字段名与混淆后代码间的映射.这个文件很重要,当你从release版本中收到一个bug报告时,可以用它来翻译被混淆的代码. seeds.txt:列出了未被混淆的类和成员 usage.txt:列出了从.apk中删除的代码 这些文件放在以下文件夹中: · Ant:<project_root>/bin/proguard · Eclips

ProGuard详解

综述 对于ProGuard工具想必我们都不陌生,它能够通过移除无用代码,使用简短无意义的名称来重命名类,字段和方法.从而能够达到压缩.优化和混淆代码的目的.最终我们会获取一个较小的apk文件,并且我们这个通过ProGuard处理的apk文件更难于进行逆向工程. ProGuard工作原理简介 ProGuard能够对Java类中的代码进行压缩(Shrink),优化(Optimize),混淆(Obfuscate),预检(Preveirfy).  1. 压缩(Shrink):在压缩处理这一步中,用于检测