android activity 混淆,关于Activity混淆

本文探讨了Android应用中的混淆策略,特别是关于Activity的混淆。虽然通常不建议混淆已注册的Activity,但通过特定的继承结构和注册方式,可以实现某些Activity的混淆。例如,BaseActivity作为未注册的基类可以混淆,而直接在Manifest中注册的子类如MainActivity则需要保持清晰。通过创建占位符类a并注册,可以使得MainActivity和BaseActivity参与混淆,同时保持应用的正常运行。这种方法提供了一种在保证应用功能的同时增强代码安全性的方法。

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

不参与混淆的类或者组件,只要是为了让应用在执行过程中能准确找到对应的类。像四大组件,我们知道一般情况下Activity的子类是不能混淆的,但是呢,并不是说完全不能混淆。

我们知道一般情况下Activity的子类是不能混淆的,但是呢这句话说的不完全。确切的说应该是在Manifest文件中注册的Activity是不能混淆的。因为Manifest文件中要写一个Activity的class的路径的字符串。如果原始的类被混淆了,而字符串没有修改,那么Android系统在做安全验证的时候就会找不到Activity,那么就没办法通过安全验证。但是设想一下如果我们的继承关系是这个样子的:MainActivity--->BaseActivity ---->Activity

那么试问,这个BaseActivity是不是可以混淆,经过验证这个是可以混淆的。因为BaseActivity 不需要在Manifest文件中注册,而MainActivity需要。那么我们变通一下。把这个继承链加长a--->MainActivity--->BaseActivity ---->Activity

这个时候,a 类的实现是这个样子的:public class  a  extends  MainActivity{}

其实a里面啥也没有,就是个占位符,这个a并不是混淆生成的,而是我们本来就把这个类命名为a。并且在Manifest文件里面我们就注册这个a类。那么试问这个时候,MainActivity 和 BaseActivity是不是就可以参与混淆。而这个时候我们的所有业务依然在MainActivity里面实现,a仅仅是个看起来像是混淆名字的占位符而已。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值