码迷,mamicode.com
首页 > 移动开发 > 详细

App安全之代码混淆

时间:2015-05-19 13:04:23      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:反编译   代码混淆   android   

参考:

http://www.cnblogs.com/sunzn/archive/2013/03/06/2946952.html

http://www.apkbus.com/android-240707-1-1.html


1、在项目根目录找到project.properties文件,将下图中圈出来的代码注释去除,即申明我们的混淆文件为proguard-project.txt

技术分享

技术分享

2、在项目根目录找到proguard-project.txt文件,按需求添加修改以下代码:

# 指定代码的压缩级别
-optimizationpasses 5
# 不使用大小写混合
-dontusemixedcaseclassnames
# 不混淆第三方jar                                          
-dontskipnonpubliclibraryclasses
# 混淆时不做预校验
-dontpreverify
# 混淆时记录日志
-verbose
# 混淆时所采用的算法
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*


# 申明外部jar包不被混淆
-libraryjars libs/alipay.jar


# 不需要混淆的部分,如系统组件和API的类:
-keep public class * extends android.app.Fragment  
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class * extends android.support.v4.**


# 缺省proguard 会检查每一个引用是否正确,但是第三方库里面往往有些不会用到的类
# 没有正确引用。如果不配置的话,系统就会报错
-dontwarn android.support.**
-dontwarn com.alibaba.fastjson.**
-dontwarn org.eclipse.persistence.**
-dontwarn com.amap.api.**
-dontwarn javax.persistence.**


# 指定的类成员被保留
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}

3、上面注释说的挺详细的,但重要的是以下几点:

(1) 这里申明的jar包只能是本项目中引用的,项目引用的其他工程中的jar包,无需在此混淆文件中申明:

# 申明外部jar包不被混淆
-libraryjars libs/alipay.jar
(2)以下申明需要根据自己项目中引用的jar包去添加,例如我就是先不添加,直接导出apk文件,这时在Console中我们可以看到报错信息,再逐一添加报错的类路径,例如com.amap.api.**就是申明com.amap.api.xxx都不会被混淆:

# 缺省proguard 会检查每一个引用是否正确,但是第三方库里面往往有些不会用到的类
# 没有正确引用。如果不配置的话,系统就会报错
-dontwarn android.support.**
-dontwarn com.alibaba.fastjson.**
-dontwarn org.eclipse.persistence.**
-dontwarn com.amap.api.**
-dontwarn javax.persistence.**


4、最后,是混淆后反编译看到的结果,其中的类名、方法名、变量名,都自动混淆成别人看不明白的名称:

技术分享

App安全之代码混淆

标签:反编译   代码混淆   android   

原文地址:http://blog.csdn.net/myatlantis/article/details/45842839

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!