关于Android混淆的开源框架Mess的学习与分析

本文介绍了Android混淆框架Mess的用途,它旨在处理XML中引用的Java类,默认不会混淆的问题。 Mess通过删除aapt_rules.txt,混淆依赖库,获取混淆映射关系,替换AndroidManifest.xml及xml文件中的类名,实现更全面的混淆。文章详细阐述了Mess的执行步骤和工作时机。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于Android混淆知识点的两篇好文章:写给 Android 开发者的混淆使用手册, Android混淆从入门到精通

参考的资料:饿了么全面混淆插件 Messandroid 防破解, 代码混淆,代码保护

Mess是用来解决什么问题的

首先,在之前学过的关于Android混淆知识中我们知道,Android默认是不会混淆四大组件和自定义View的,或者换一个说法,出现在 xml 里的相关 Java 类默认是不会被混淆的。

你不禁会问,为什么Android默认要这么做?

答:因为 Proguard 原本是为 Java 打造的,它无法搜索到我们 AndroidManifest、布局等文件中引用了哪些 Java 类,因此如果 Java 代码变了而 XML 文件中的引用没变,就会造成反射失败,所以android默认这些被 XML 使用到的类需要 keep 住。

关于这一点,我们可以简单的验证一下:

打开build/intermediates/proguard-files/路径下的proguard-android.txt文件,这里面帮我们声明了许多混淆规则内容,包括:keep 所有继承自 View 的类,keep 所有继承自 Activity 的类,keep 所有 JavascriptInterface、native 方法声明,以及 keep 一些注解了 @Keep 的内容,例如:

好,说了这么多,Mess这个插件的目的就是在混淆的时候把这些顽固分子一起收拾了,让你的应用混淆的更彻底,更安全!

Mess的主要构成

Mess的项目地址:https://github.com/eleme/Mess

我把它下载到了本地&#x

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值