代码混淆

ProGuard使用简介

北战南征 提交于 2020-02-22 15:06:10
我们做java开发的一般都会遇到如何保护我们开发的代码问题。java语言由于是基于jvm上面,所以反编译class 文件很很容易。假如我们做了一个web程序,并把这个web程序发布给客户。实际上,客户是很容易反编译出我们的源代码出来,包括所有的src文件和 jsp文件等等。 那么,如何保护我们的源代码,实际上,应该有几种方法可以使用:1、使用代码混淆器 2、重载应用服务器的classloader 对于第一种方法来说,现在外面有很多开源工具可以使用,个人认为最好用的当属proguard莫属。proguard主要是易用易学。而且提供的功能也挺多。下面是个人一点使用心得 (1)、从网上download proguard工具,proguard工具主要包含是几个jar文件和一些example,下载地址http://proguard.sourceforge.net/ (2)、将里面的几个jar文件添加到类路径下面。当然,也可以不添加,但是下面在做混淆的时候,必须指定classpath,使在做混淆的过程中,能否访问该类 (3)、编写一个配置文件,主要是混淆器的一些参数。比如,下面是一个例子 -injars platform.jar -outjars platform_out.jar -libraryjars <java.home>/lib/rt.jar -libraryjars ibatis

【Android】proguard混淆代码

久未见 提交于 2020-02-22 14:00:24
【doc】 http://developer.android.com/tools/help/proguard.html#configuring 以下是简略的内容,如果需要仔细查看相关手册,请点击上述链接。 一、步骤 1、将proguard.cfg文件拷贝到XX工程下;如果新建工程时选择的Android版本是2.3及以上的,创建后工程下就会自带该文件 2、在project.propertites文件中,加入语句: proguard.config=proguard.cfg 或者 proguard.config=/path/to/proguard.cfg 3、clean工程 4、签名 以上步骤即可完成一定保护代码的作用。 二、例子说明 测试XX.apk反编译获取相关文件,proguard.cfg脚本没有做任何修改 使用apktool获取res资源文件 dex2jar获取src文件 没有proguard 可以 可以 有proguard 可以 部分类的类名已混淆(a,b…),代码可读性下降 三、文件说明 【参考】 http://developer.android.com/tools/help/proguard.html#configuring ProGuard运行结束后,输出以下文件: dump.txt 描述.apk文件中所有类文件间的内部结构 mapping.txt 列出了原始的类

2步完成代码混淆

女生的网名这么多〃 提交于 2020-02-22 13:59:08
【第一步】: 修改module下的build.gradle buildTypes { release { // 是否进行混淆 minifyEnabled true // 混淆文件的位置 // proguard是一个压缩、优化和混淆Java字节码文件的免费的工具 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } 【第二步】: 在proguard-rules.pro中添加: #指定代码的压缩级别 -optimizationpasses 5 #包明不混合大小写 -dontusemixedcaseclassnames #不去忽略非公共的库类 -dontskipnonpubliclibraryclasses #优化 不优化输入的类文件 -dontoptimize #预校验 -dontpreverify #混淆时是否记录日志 -verbose # 混淆时所采用的算法 -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* #保护注解 -keepattributes *Annotation* # 保持哪些类不被混淆 -keep public class * extends

Android安全-代码安全1-ProGuard混淆处理

你说的曾经没有我的故事 提交于 2020-02-22 13:58:52
  Android安全-代码安全1-ProGuard混淆处理 ProGuard简介 ProGuard是一个SourceForge上非常知名的开源项目。官网网址是:http://proguard.sourceforge.net/。 Java的字节码一般是非常容易反编译的。为了很好的保护Java源代码,我们往往会对编译好的class文件进行混淆处理。ProGuard的主要作用就是混淆。当然它还能对字节码进行缩减体积、优化等,但那些对于我们来说都算是次要的功能。 Android Eclipse开发环境与ProGuard 在新版本的ADT创建项目时,混码的文件不再是proguard.cfg,而是project.properties和proguard-project.txt。 如果需要对项目进行全局混码,只需要进行一步操作: 将project.properties的中 “# proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt”的“#”去掉就可以了。 如 果有一些代码不能被混淆,比如需要加入了so文件,需要调用里面的方法,那么调用JNI访问so文件的方法就不能被混码。在导出的时候,可能不会报错。但 是在手机上运行的时候,需要调用so文件的时候,就会报某某方法无法找到

android studio 混淆

好久不见. 提交于 2020-02-22 13:58:09
这篇文章等是跟大家分享一在Android studio 进行代码混淆配置。之前大家在eclipse上也弄过代码混淆配置,其实一样,大家可以把之前在eclipse上的配置文件直接拿过来用。不管是.cfg文件还是.txt文件都一样。 先给大家贴一个混淆模板吧。注释很清楚。是我目前一个项目用的proguard.cfg配置文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137

Android 混淆与混淆过滤

爷,独闯天下 提交于 2020-02-22 13:57:27
Android 中代码混淆一般用的是 ProGuard .它除了混淆代码之后还有其它许多实用的功能。这里主要记录混淆相关的实现。 1.ProGuard的作用   删除无用代码,压缩和优化Class文件,缩小APK的体积;   提高逆向门槛,保护代码安全; 2.ProGuard的使用   Eclipse   在Android2.3之前,混淆代码需手动添加proguard来实现代码混淆;2.3之后,Google将其加入到SDK中(SDK\tools\groguard)。当创建工程时,在工程的根目录下会自动生成project.properties,proguard-project.txt(旧片本为proguard.cfg),然后在Eclipse工程中可直接使用ProGuard混淆工程。启用混淆只需要简单的两步:   老版本   1)在project.properties中添加“proguard.config=proguard.cfg”   2)在proguard.cfg中添加混淆和过滤的规则   新版本   1)解除project.properties文件中的“#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt”的注释   2)在proguard-project

proguard 原理

夙愿已清 提交于 2020-02-22 13:56:25
from:http://www.eoeandroid.com/thread-209210-1-1.html proguard 原理 Java代码编译成二进制class 文件,这个class 文件也可以反编译成源代码 ,除了注释外,原来的code 基本都可以看到。为了防止重要code 被泄露,我们往往需要混淆(Obfuscation code , 也就是把方法,字段,包和类这些java 元素的名称改成无意义的名称,这样代码结构没有变化,还可以运行,但是想弄懂代码的架构却很难。 proguard 就是这样的混淆工具,它可以分析一组class 的结构,根据用户的配置,然后把这些class 文件的可以混淆java 元素名混淆掉。在分析class 的同时,他还有其他两个功能,删除无效代码(Shrinking 收缩),和代码进行优化 (Optimization Options)。 缺省情况下,proguard 会混淆所有代码,但是下面几种情况是不能改变java 元素的名称,否则就会这样就会导致程序出错。 一, 我们用到反射的地方。 二, 我们代码依赖于系统的接口,比如被系统代码调用的回调方法,这种情况最复杂。 三, 是我们的java 元素名称是在配置文件中配置好的。 所以使用proguard时,我们需要有个配置文件告诉proguard 那些java 元素是不能混淆的。 proguard 配置

使用proguard混淆android代码

拈花ヽ惹草 提交于 2020-02-22 13:55:49
当前是有些工具比方apktool,dextojar等是能够对我们android安装包进行反编译,获得源代码的。为了降低被别人破解,导致源代码泄露,程序被别人盗代替码,等等。我们须要对代码进行混淆,android的sdk中为我们提供了ProGrard这个工具,能够对代码进行混淆(通常是用无意义的名字来重命名),以及去除没有使用到的代码,对程序进行优化和压缩,这样能够添加�你想的难度。近期我做的项目,是我去配置的混淆配置,因此研究了一下,这里分享一下。 怎样启用ProGuard ant项目和eclipse项目启用方法 在项目的 project.properties 文件里加入�一下代码 proguard.config=proguard.cfg //proguard.cfg为proguard的配置文件 proguard.config=/path/to/proguard.cfg //路径不在项目根文件夹时,填写实际路径 填写这句配置后,在 release 打包时就会依照我们的配置进行混淆,注意,在我们平时的debug时是不会进行混淆的。 Gradle项目(以及Android Studio) 在build.gradle中进行配置 android { buildTypes { release { runProguard true proguardFiles

转:ProGuard 常见命令备份

自古美人都是妖i 提交于 2020-02-22 13:54:37
转: 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中存在的类文件. 参数:

Proguard.cfg 配置

瘦欲@ 提交于 2020-02-22 13:52:08
-optimizationpasses 5 //代码混淆压缩比 默认为5 一般不需要改 -dontusemixedcaseclassnames //混淆后的类名为小写 如public class a -dontskipnonpubliclibraryclasses //混淆第三方 库 加上此句后 可再后面配置某些库不混淆 -dontpreverify // 混淆前认证,可去掉加快混淆速度 -verbose //混淆的log 帮助排错 -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* //代码混淆采用的算法,一般不改变,用谷歌推荐算即可 -keepattributes *Annotation* 假如项目中有用到注解 应用加入 引用外部的jar包 如果不是自己写的 最好不混淆它们,因为外部jar包有可能已经混淆过,根据实际情况来 不混淆某些外部jar 保持外部jar包不变的方法-dontwarn android.support.v4.** //执行下面一行代码如果有警告也不用中止,因为此jar不是我们自己写的,有警告也不处理,故dontwarn-keep class android.support.v4.** //项目中用到此jar包,在打包时必须不混淆