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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android代码可以通过以下几种方式来防止反编译: 1. 混淆代码:在构建APK时启用代码混淆。混淆工具可以重命名类、方法和变量名,删除无用的代码,并对代码进行优化,使得反编译后的代码难以理解。可以在项目的build.gradle文件中配置混淆规则,如启用ProGuard混淆。 2. 加密敏感数据:对于敏感数据,可以使用加密算法进行加密处理,使得反编译后的代码无法直接获取到明文数据。 3. 使用动态加载:将一部分代码或资源以加密形式存储在服务器端,通过动态加载的方式在运行时进行解密和加载。这样可以减少静态分析的可能性。 4. 使用JNI(Java Native Interface):将关键代码使用JNI封装,以本地代码的形式实现,这样可以使得反编译后的代码无法直接获取到关键逻辑。 5. 使用数字签名:为APK文件添加数字签名,确保应用程序的完整性和真实性。如果APK文件被篡改,数字签名将无效,从而防止被恶意修改和破解。 总结起来,通过代码混淆、数据加密、动态加载、使用JNI和数字签名等方式可以有效地提高Android代码的安全性,减少反编译的可能性。但需要注意,这些方法并不能完全防止反编译,只能增加攻击者的难度。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Android反编译工具与实践](https://blog.csdn.net/lfdfhl/article/details/129941419)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [android 防止反编译 安全加固技术](https://blog.csdn.net/skyjie6/article/details/118388579)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值