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

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

  • 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、付费专栏及课程。

余额充值