代码混淆是什么?
混淆从字面意思来说是混合、杂糅,使一个事物变得难以区分或识别。代码混淆是将计算机程序的源代码或机器代码,转换成功能上等价,但是难于阅读和理解形式的行为。本文就Android上代码混淆技术进行展开讨论。
代码混淆具体方案
混淆开启
在对应模块比如的build.gradle android 配置下进行开启
android {
buildTypes {
release {
// 启用代码压缩 开启混淆,这是使用 ProGuard 的前提。
minifyEnabled true
// 启用资源压缩,移除未使用的资源
shrinkResources true
// 混淆配置,proguard-android-optimize.txt是Android默认配置,在Android SDK 工具目录下,proguard-rules.pro是用户自定义配置,该文件在项目根目录下
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
开启混淆后,在编译过程中会将代码中的类名、方法名和变量名替换为无意义的字符,从而使编译后代码变得难以理解,增加了黑客和其他开发者反编译SDK或者APK读懂源码的难度吗,一定程度上增加了APK的安全性。混淆过程过程其实就是一些字符映射替换的过程,为了方便开发者自己定位问题,Android Studio 是有把这个这个映射文件打印出来的
混淆map大概是如下样子
com.example.MyClass -> com.example.a.b.c.MyClass:
java.lang.String myField -> myField
int myMethod(java.lang.String) -> a(java.lang.String)
混淆配置
**主要是指定哪些代码需要被混淆,以及哪些代码不被混淆(比如一些类、方法在代码中被反射调用就不能随便更改方法名),这些在两种文件中:proguard-rules.pro 和 consumer-rules.pro**
- proguard-rules.pro : 该文件是用于指定当前模块(无论是应用模块还是库模块)的混淆规则;
- consumer-rules.pro:该文件主要用于库模块(Library Module),这个文件包含的规则不是当前模块编译时候的混淆规则,而是告诉使用了这个库模块的模块(即库的消费者)在混淆自己的代码时应该如何配置它的这个依赖库。
混淆规则示例:
-keep public class com.example.MyClass:保留指定的类不被混淆。
-keep class com.example.** { *; }:保留指定包下的所有类和类成员。
-keepclassmembers class com.example.MyClass { public void myMethod(); }:保留类中的特定方法不被混淆。
-keepclassmembers class com.example.MyClass { *; }:保留类中的所有成员(字段和方法)。
-keepattributes *Annotation*:保留所有的注解。
-keepclassmembers enum * { *; }:保留所有枚举类型的成员
代码混淆技术的未来
代码混淆和理解被混淆的代码是盾和矛的故事,未来AI大模型加持下 代码混淆将变得更加彻底,使得阅读起来更加难,但是AI加持得解析混淆代码也会变得更加容易,具体来说AI大模型可能会和混淆在以下方面进行有交叉:
- 智能混淆:AI大模型可以用于设计更复杂的混淆算法,这些算法能够自动地识别代码中的关键部分,并以更有效的方式进行混淆。通过机器学习,这些模型可以学习如何最大化混淆效果,同时最小化对性能的影响;
- 混淆解析以及策略优化:AI可以帮助开发者分析混淆后的代码,并提供关于哪些部分需要进一步混淆或哪些混淆策略更有效的反馈
- 攻击模式识别:AI大模型可以分析历史上的攻击模式,并据此设计混淆策略,使得针对特定攻击模式的防御更加有效;
最后
如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。
如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。
相对于我们平时看的碎片化内容,这份笔记的知识点更系统化,更容易理解和记忆,是严格按照知识体系编排的。
欢迎大家一键三连支持,若需要文中资料,直接扫描文末CSDN官方认证微信卡片免费领取↓↓↓(文末还有ChatGPT机器人小福利哦,大家千万不要错过)
PS:群里还设有ChatGPT机器人,可以解答大家在工作上或者是技术上的问题
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/109249.html