Android 反编译与防止被反编译

反编译神器:jadx

防止反编译

防止反编译的几种方法

Android ProGuard

  • 启用ProGuard

在Android专案根目录下,有个「project.properties」档案,找到以下字串,并移除掉前面的「#」,即可启用ProGuard。

#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

这行文字的意思是告诉Eclipse在编译Android的时候使用proguard对程式码进行混淆,并指定混淆的参数设定档。预设的Android专案会在开头加上「#」,表示此行文字为注解,也就是没有开启ProGuard。

  • 使用ProGuard

启用ProGuard之后,往后使用Android的Export工具来输出专案,都会自动把程式码给混淆。无须再进行而外的动作。

  • 启用ProGuard可能会遭遇的问题

由于有些程式是不可以被混淆的,例如有使用到「Class.forName」这类方法来呼叫的套件。可以藉由修改Android专案目录下的ProGuard设定档「proguard-project.txt」,加入-keep参数来保留指定的程式码不被混淆。通常-dontwarn参数也会跟-keep合用,目的是要让ProGuard不要去检查指定Class下程式码的错误(当然若有出现错误再加也不迟)。

有许多程式用了ProGuard之后会出现型别转换错误,可以加上「-keepattributes Signature」参数,保留程式的签名。

以下是proguard-project.txt的设定参考:

-keep class com.google.** { ; } -dontwarn com.google.*

-keep class com.facebook.** { ; } -dontwarn com.facebook.*

-keep class org.apache.** { ; } -dontwarn org.apache.*
-keepattributes Signature

Proguard代码混淆时Unsupported class version number [52.0] (maximum 51.0, Java 1.7)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值