Android开发笔记(七十三)代码混淆与反破解

本文探讨了Android开发中的代码混淆,使用ProGuard进行安全防护,防止二次打包,并介绍了通过添加花指令增强应用安全性。
摘要由CSDN通过智能技术生成

代码混淆

ProGuard是ADT自带的apk混淆器,它的用途有:
1、压缩apk包的大小,能删除无用的代码,并简化部分类名和方法名。
2、加大破解源码的难度,因为部分类名和方法名被重命名,使得程序逻辑变得难以理解。


代码混淆的规则在proguard-project.txt中编写,然后在project.properties补充规则文件的路径,如下所示:
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt


下面是proguard-project.txt的一个例子:
#指定代码的压缩级别
-optimizationpasses 5
#是否使用大小写混合
-dontusemixedcaseclassnames
#优化/不优化输入的类文件
-dontoptimize
#是否混淆第三方jar包
-dontskipnonpubliclibraryclasses
#混淆时是否做预校验
-dontpreverify
#混淆时是否记录日志
-verbose
#混淆时所采用的算法
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
#保护注解
-keepattributes *Annotation*

#保持JNI用到的native方法不被混淆
-keepclasseswithmembers class * {
    native <methods>;
}

#保持自定义控件的构造函数不被混淆,因为自定义控件很可能直接写在布局文件中
-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet);
}

#保持自定义控件的构造函数不被混淆
-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet, int);
}

#保持布局中onClick属性指定的方法不被混淆
-keepclassmembers class * extends android.app.Activity {
   public void *(android.view.View);
}

#保
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值