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

来源:互联网 发布:万宝盛华集团 知乎 编辑:程序博客网 时间:2024/06/05 08:43

混淆:

这里只在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
按照该文章的步骤操作后,你会发现代码已经被混淆了。

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

0 0