ProGuard 是一个免费的 Java类文件的压缩,优化,混肴器。它删除没有用的类,字段,方法与属性。使字节码最大程度地优化,使用简短且无意义的名字来重命名类、字段和方法 。eclipse已经把Proguard集成在一起了。
1.ProGuard介绍 ProGuard是一个压缩、优化和混淆Java字节码文件的免费的工具,它可以删除无用的类、字段、方法和属性。可以删除没用的注释,最大限度地优化字节码文件。它还可以使用简短的无意义的名称来重命名已经存在的类、字段、方法和属性。常常用于Android开发用于混淆最终的项目,增加项目被反编译的难度。 下面是官网http://proguard.sourceforge.net/)的
1. 简介 因为Java代码是非常容易反编码的,为了很好的保护Java源代码,我们需要对编译好后的class文件进行混淆。 ProGuard是一个用于Android开发用于混淆最终的项目,增加项目被反编译难度的免费工具。最明显的特征为混淆,它可以使用简短的无意义的名称来重命名已经存在的类、字段、方法和属性。 官方简介:ProGuard is a free
proguard 原理 Java代码编译成二进制class 文件,这个class 文件也可以反编译成源代码 ,除了注释外,原来的code 基本都可以看到。为了防止重要code 被泄露,我们往往需要混淆(Obfuscation code , 也就是把方法,字段,包和类这些java 元素的名称改成无意义的名称,这样代码结构没有变化,还可以运行,但是想弄懂代码的架构却很难。 proguard 就是这样的
在Android项目中用到JNI,当用了proguard后,发现native方法找不到很多变量,原来是被produard优化掉了。所以,在JNI应用中该慎用progurad啊。 解决办法: 1、在Android.mk中加入一行: LOCAL_PROGUARD_FLAGS := -include $(LOCAL_PATH)/proguard.flags 2、创建proguard.flag文件,里面写
ProGuard工具通过移除不用的代码,用语义上混淆的名字来重命名类、字段和方法等手段来压缩、优化和混淆你的代码。结果是更小的.apk文件,并且更难于被反编译。由于ProGuard能够让你的程序难于被反编译,因此,当你的程序使用了一些机密的信息的时,使用它就显得更加重要。 ProGuard已经集成到Android的编译环境中,因此,用不着手动来触发它。ProGuard只在relea
ProGuard runs only when you build your application in release mode,so you do not have to deal with obfuscated code when you build your applicationin debug mode. 在default.properties中配置:(如果隐藏在某个路径中,则需要加
ProGuard算是Android上的一大利器,主要进行java代码的裁剪压缩,优化,混淆以及预校验,在日常工作中有时会出现一些很奇怪的问题,明明我的代码里面有 这个类,属性或者接口,可是为啥到用的时候死活提示就没有了呢?这类奇葩问题在还没有接触ProGuard的亲面前可谓是相当无语,当你知道有ProGuard之后一切 都迎刃而解了,都是ProGuard在做优化裁剪的时候可能没有human bei
在新版本的ADT创建项目时,混码的文件不再是proguard.cfg,而是project.properties和proguard-project.txt。 如果需要对项目进行全局混码,只需要进行一步操作: 将project.properties的中 “# proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard
为了防止开发APP的重要code 被泄露,我们往往需要混淆(Obfuscation code ), 也就是把方法,字段,包和类这些java 元素的名称改成无意义的名称,这样代码结构没有变化,还可以运行,但是想弄懂代码的架构却很难。 proguard 就是这样的混淆工具,它可以分析一组class 的结构,根据用户的配置,然后把这些class 文件的可以混淆java 元素名混淆掉。在分析class 的
最近遇到使用代码混淆的问题所以学习了一下proguard。下面是需要注意的地方,也是提醒自己留个印象: 1、Android.mk: (1)LOCAL_PROGUARD_ENABLED := disabled #控制是否开启proguard,默认值为full (2)LOCAL_PROGUARD_FLAG_FILES := proguard.flags #选择加载的flags文件 以上标记都可以在bu
在我们编译Android系统的user版本的时候,有时候会出现proguard的错误,在解决这个错误之着,我们需要了解一些知识: 1,proguard是用来干什么的? 简单点说,他就是用来做JAVA代码混淆的一个工具。 2,这个东西在哪里实现的? 我们一般会在Android.mk文件中对其进行支持,比如: 1)指定不需要混淆的native方法和变量的proguard
-keep [,modifier,…] class_specification 指定类和类成员(变量和方法) 将被保留,用于往外暴露。举例,为了主入口类, -keep public class com.example.MyMain { public static void main(java.lang.String[]); } 你可以指定main class和他的main函数。另外一个例
ProGuard是一个免费的Java 类文件压缩,优化,混淆器.它探测并删除没有使用的类,字段,方法和属性.它删除没有用的说明并使用字节码得到最大优化.它使用无意义的名字来重命名类,字段和方法. ProGuard的使用是为了: 1.创建紧凑的代码文档是为了更快的网络传输,快速装载和更小的内存占用. 2.创建的程序和程序库很难使用反向工程. 3.所以它能删除来自源文件中的没有调用的代码 4.
ProGuard工具通过删除未使用的代码,使用语义模糊的名字重命名类、字段和方法的方式,减少、优化和混淆你的代码。结果生成一个更小的,更难被反向工程的.apk文件。因为ProGuard使你的应用程序更难反向工程,当你发布的应用程序使用对安全敏感功能的时候,使用它尤为重要。 ProGuard已经被集成到Android的构建系统中,所以你不需要手动的调用它。ProGuard仅仅当你在releas
ProGuard工具通过移除未使用代码和使用语义模糊的名字重命名类、成员变量及方法, 从而实现减小、优化和混淆应用程序代码. 使用ProGuard工具后, 会得到一个更小的.apk文件, 并且使得逆向工程更加困难. 因为ProGuard使得应用程序的逆向工程更加困难, 所以当应用程序用到了对安全很敏感的特性时, 就有必要使用ProGuard工具了. ProGuard工具集成在Android的编
解析的时候往往会用到第三方jar包 -libraryjars ../libs/mail.jar -libraryjars ../libs/activation.jar -libraryjars ../libs/additionnal.jar -libraryjars ../libs/android-support-v4.jar 还有的如下: ==========================
运行Proguard,立即输入(当然你需要定位到proguard.jar的目录下面): java -jar proguard.jar options … proguard.jar在lib目录下(android的sdk下/tools/proguard可以找到),而bin目录下有了一些linux和windows脚本可以执行这个命令。典型的,你可以把选项都放在一个文件里(比如说myconfig.pro)
Proguard的Optimization可以通过开关-dontoptimize来进行设置。 通过-optimizations可以设置详细的优化规则。 !表示exclude。 "code/simplification/variable,code/simplification/arithmetic" 仅仅做SimplificationVariable和SimplificationArit
在Android GB中, 当编译user模式时,所有apk会使用proguard进行优化处理,这时在运行状态会出现很多问题,针对于此, Android提供了编译选项解决些问题。 方法1: 在Android.mk中加入LOCAL_PROGUARD_ENABLED := disable,就可避免proguard进行优化处理。 方法2: 在应用程序的目录下会有个文件:proguard.flags,
Proguard插件: <plugin> <groupId>com.github.wvengen</groupId> <artifactId>proguard-maven-plugin</artifactId> <version>2.1.1</version> <executions> <execution> <!-- 混淆时刻,此处为编译的时
我们已知java在导出jar包时,别人可以反编译一看基本上就源码级别;如何有对jar有保密的需求的话,可以使用下Proguard可以对jar包的代码进行混淆。 下载proguard,看以参照包里面的例子来操作,如examples文件夹下已有对应的规则例子:android.pro,application.pro,基本可以在上面改你需要的规则并修改下 输入的jar包的路径和输出的jar包的路径,然后在
在Android项目中用到JNI,当用了proguard后,发现native方法找不到很多变量,原来是被produard优化掉了。所以,在JNI应用中该慎用progurad啊。 解决办法: 1、在Android.mk中加入一行: LOCAL_PROGUARD_FLAGS := -include $(LOCAL_PATH)/proguard.flags 2、创建proguard.flag文件,里面
我一直在摆弄Proguard配置,我想测试只是为了优化 但我仍然会遇到这样的错误: java.lang.IllegalArgumentExc0019:找不到[org/apache/log/log4j/core/jackson/Log4jXmlMoules](有1个已知的超级类)和[org/apache/log/log4j/core/jackson/Log4jJsonMoules](有4个已知的超级
Powershell的混淆目前已经使用的越来越多,国内外也有了较多的研究,在今年的BH大会上也有对应的议题,关注点是反混淆,那么里面的一些姿势很值得我们学习,我们提供一些混淆实例,来让大家对于PS的混淆做到一个初步了解,也为防御混淆提供一些思路。 实例 在混淆之前,先看看powershell编码执行的方式。 -EC,-EncodedCommand,-EncodedComman,-EncodedCo
问题内容: 我正在寻找一个好的Java混淆器。 我已经对以下Java混淆器进行了初步研究:proguard,yguard,retroguard,dasho,alatorari,jshrink,smokescreen,jobfuscate,marvin,jbco,jode,javaguard,jarg,joga,cafebabe,donquixote,mwobfu,bbmug,zelix klass
我对混淆有问题。为了获得更好的想象力: JAVA代码 本机代码 在我想发布一个混淆版本之前,一切都很好。这个类中的Java类(例如)和方法的名称被proGuard重命名为“a”和“a()”(这可能并不总是相同的),但在本机代码中,方法和类的原始名称保持不变,因为它被硬编码为字符串,如下所示: ...有没有办法动态设置方法名?
我正在努力解决JavaFX应用程序的模糊问题。以本项目为基础: Proguard配置文件:-dontoptimized-dontshrink 有人有JavaFX模糊处理的经验吗?
混淆nick /** * 混淆nick * * @memberOf Tida * @name mixNick * @function * * @param {object} options 入参 * @param {number} options.sellerNick 卖家昵称,微淘应用必填,互动应用选填 * @param {function} callback 回调函数
SDK已经做了相关必要混淆,开发者集成此SDK时无需再进行混淆,不当的混淆可能造成SDK功能不可用甚至崩溃。因此,请使用keep选项指定不对SDK进行混淆,具体在混淆配置文件proguard-project.txt中添加如下keep配置即可: -keep class com.baidu.mobstat.** { *; } -keep class com.baidu.bottom.** { *; }
我尝试在android studio中使用Proguard,但Proguard似乎没有混淆类名,例如,我的应用程序结构和配置: 和配置 但当我尝试在应用程序中触发异常时: ADB控制台中列出了异常: 只有方法被混淆了,MainActivity.class没有