谨以此文,记我在公司实习时,所接到的第一个正式的、有意义的任务——将公司即将发布的APK进行代码混淆。
什么是代码混淆
混淆就是对发布出去的程序进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能,而混淆后的代码很难被反编译,即使反编译成功也很难得出程序的真正语义。被混淆过的程序代码,仍然遵照原来的档案格式和指令集,执行结果也与混淆前一样,只是混淆器将代码中的所有变量、...
分类:
移动开发 时间:
2016-07-15 17:16:01
阅读次数:
221
为了让你的APK文件尽可能的小,你需要在构建的时候开启压缩来移除无用的代码和资源。代码压缩可在ProGuard中使用,可以检测和清除无用的类,变量,方法和属性,甚至包括你引用的库。ProGuard同样可以优化字节码,移除无用的代码,并且模糊剩下的类,变量和方法。代码模糊可以让增加APK逆向工程的成本。资源压缩可在Andorid的Gradle插件中使用,可以清除你打包的APP中无用的资源,包含你引用的...
分类:
移动开发 时间:
2016-06-28 11:06:06
阅读次数:
175
在proguard-rules.pro中添加以下代码: build.gradle的编译配置如下: ...
分类:
移动开发 时间:
2016-06-19 17:03:20
阅读次数:
450
官方网站用法
http://proguard.sourceforge.net/index.html#/manual/examples.html
proguard主要三部分功能
缩减代码、优化代码、混淆代码。三部分功能都可以在配置文件里配置不启用此功能。
#Shrink Options
#不缩减代码
-dontshrink
#Optimization Options
#优化代...
分类:
编程语言 时间:
2016-06-16 14:51:09
阅读次数:
202
二、混淆实例 1、在proguard-project.txt里面配置混淆后; 2、在project.properties中添加proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 3.混 ...
分类:
移动开发 时间:
2016-06-08 19:04:49
阅读次数:
335
在proguard-rules.pro混淆规则文件中添加: ...
分类:
移动开发 时间:
2016-06-02 11:14:47
阅读次数:
532
前言 前言 受《APP研发录》启发,里面讲到一名Android程序员,在工作一段时间后,会感觉到迷茫,想进阶的话接下去是看Android系统源码呢,还是每天继续做应用,毕竟每天都是画UI和利用MobileAPI处理Json还是蛮无聊的,做着重复的事情,没有技术的上提升空间的。所以,根据里面提到的An ...
分类:
其他好文 时间:
2016-05-27 16:46:57
阅读次数:
202
我们都知道,如果打开了混淆开关,代码 release 阶段会根据 proguard 规则进行混淆,但是有些实体类(例如 json 字符串对应的 model)需要进行序列化、反序列化,而序列化工具(例如 Gson、fastjson)是利用反射来一一对应 json 串的 key 和实体类的成员变量。例如,我们定义一个 POJO 类型的 User 实体类。public class User {
pub...
分类:
其他好文 时间:
2016-05-17 09:58:07
阅读次数:
175
代码混淆,降低代码可读性;eg:Proguard将敏感数据和操作放到服务端进行;迭代散列与使用盐值,降低hash碰撞,降低暴力破解hash的可能性选择合适位置存储敏感信息,SQLite,preference等加密数据
分类:
其他好文 时间:
2016-05-17 01:03:14
阅读次数:
175
Android Studio项目目录结构 app/build/ app模块build编译输出的目录 app/build.gradle app模块的gradle编译文件 app/app.iml app模块的配置文件 app/proguard-rules.pro app模块proguard文件 buil ...
分类:
其他好文 时间:
2016-05-17 00:31:42
阅读次数:
165