Android学习记录(三)Android的代码混淆及反编译验证

混淆:

这里只在Android studio中做示例:

在Build.gradle文件中修改release的编译属性:
  release {
            minifyEnabled true
//            proguardFiles getDefaultProguardFile('proguard-android.txt'), "proguard-rules.pro"
            proguardFile 'proguard-android.txt'
        }

proguard-android.txt
该文件就是混淆配置文件

主要需要注意的是以下几点:
1.第三方的库需要使用:
-injars  libs
-injars  libs/ext
-injars  libs/libs
或者是:
#-libraryjars libs/zxing.jar
#-libraryjars libs/aoe.jar
#-libraryjars libs/libs/umeng-update-v2.6.0.1.jar
#-libraryjars libs/umeng-analytics-v5.6.1.jar
#-libraryjars libs/ext/cling-core-2.1.0.jar

将第三方库标示出来,进行编译,第三方的库通常情况下不会进行混淆。

2.对于第三方库以及部分系统库,需要使用-dontwarn标签进行标注,标示相关的类的warn不影响混淆编译。
-dontwarn org.fourthline.cling.**
-dontwarn org.seamless.**
-dontwarn org.eclipse.jetty.**
-dontwarn android.support.v4.**
-dontwarn android.support.design.widget.**
-dontwarn org.junit.**

3.使用-keep标签进行标注,第三方库的方法不进行混淆,如:
-keep class org.fourthline.cling.** { *; }
-keep class org.seamless.** { *;}
-keep class org.eclipse.jetty.** { *;}
-keep class android.support.v4.** { *; }
-keep class org.junit.** { *; }

一般来说这样就可以根据签名生成混淆后的apk.

反编译:

拿到apk还是没有办法确认是否混淆,这里转发一篇文章:
http://www.2cto.com/kf/201501/366447.html
按照该文章的步骤操作后,你会发现代码已经被混淆了。

最后:混淆只是增加代码阅读的复杂度,真正需要做到安全还有很多路要走。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值