当前位置: 首页 > news >正文

AOSP自启动拦截框架Intent Firewall

摘要

        Intent Firewall是AOSP提供一套匹配自启动拦截框架,主要核心逻辑在service的firewall目录,拦截逻辑核心类是IntentFirewall,但AOSP的逻辑仅仅包含activity、service和broadcast简单根据配置文件名单拦截逻辑,且aosp没有提供配配置文件,故相当于功能没有生效。

自启动拦截配置表

自启动拦截配置表,IntentFire规则表

<rules>    <activity block="false" called="com.alibaba.android.rimet" caller="com.alibaba.android.rimet"        interaction="*" log="true">        <intent-filter>            <action name="android.intent.action.VIEW" />        </intent-filter>        <component-filter            name="com.alibaba.android.rimet/com.alibaba.android.rimet.biz.home.activity.HomeActivity" />    </activity></rules>

IntentFire规则表初始化​​​​​​​

===IntentFire规则表 ===*ActivityManagerService.构造器->IntentFirewall.实例化**IntentFirewall.构造器->IntentFirewall.getRulesDir():/data/system/ifw or /data/secure/system/ifw 目前为空**IntentFirewall.构造器->IntentFirewall.readRulesDir()***IntentFirewall.readRulesDir()->IntentFirewall.readRules() 读取广播、service和activity的拦截规则**IntentFirewall.构造器->IntentFirewall.RuleObserver() 监听文件变化

拦截Activity checkStartActivity​​​​​​​

===拦截Activity checkStartActivity===*ActivityStarter.executeRequest->IntentFirewall.checkStartActivity(intent, callingUid,callingPid, resolvedType, aInfo.applicationInfo)**IntentFirewall.checkStartActivity->IntentFirewall.checkIntent()***IntentFirewall.checkIntent()->ActivityResolver.queryIntent() 查询拦截某个App的Intent的action的规则信息***IntentFirewall.checkIntent()->ActivityResolver.queryByComponent()查询拦截某个App的组件的规则信息***IntentFirewall.checkIntent()->Rule.matches() 当前app是否满足拦截的规则****Rule.matches() ->AndFilter.matches()*****AndFilter.matches() ->FilterList.children.Filter.matches(ComponentName,Intent) 查看action和组件是否匹配

拦截Service checkService

​​​​​​​

===拦截Service checkService===ActiveServices.retrieveServiceLocked->mIntentFirewall.checkService((r.name, service, callingUid, callingPid,resolvedType, r.appInfo)**IntentFirewall.checkService->IntentFirewall.checkIntent()

拦截广播 checkBroadcast

​​​​​​​

===拦截广播 checkBroadcast===*BroadcastSkipPolicy.shouldSkipMessage()->IntentFirewall.checkBroadcast(r.intent, r.callingUid,r.callingPid, r.resolvedType, info.activityInfo.applicationInfo.uid)**IntentFirewall.checkBroadcast->IntentFirewall.checkIntent()

AOSP的基本就是死规则了。可以根据源码的逻辑,填写下xml就可以了。但是会显得自启动策略比较呆哈。

http://www.dtcms.com/a/273385.html

相关文章:

  • 反向传播notes
  • 敏捷测试中的质量闸门如何设置?
  • 位运算算法题
  • 第七讲:C++中的string类
  • 深度学习参数初始化方法详解及代码实现
  • 深度学习×第7卷:参数初始化与网络搭建——她第一次挑好初始的重量
  • ZW3D 二次开发-创建椭球体
  • 灰度发布策略制定方案时可以参考的几个维度
  • 递推+高精度加法 P1255 数楼梯
  • apt -y参数的含义
  • 计算机视觉 之 数字图像处理基础(一)
  • Kubernetes 1.23.6 kube-scheduler 默认打分和排序机制详解
  • 多商户商城系统源码选型指南:开源 vs 定制,哪种更适合?
  • 救回多年未用kubeadm搭建的kubernetes集群
  • 5. isaac sim4.2 教程-Core API-操作机械臂
  • 用黑盒测试与白盒测试,读懂专利审查的 “双重关卡”​​
  • K8S的CNI之calico插件升级至3.30.2
  • 深度学习中的 Seq2Seq 模型与注意力机制
  • 解释sync.WaitGroup的用途和工作原理。在什么情况下应该使用它?
  • 时间显示 蓝桥云课Java
  • Android ViewBinding 使用与封装教程​​
  • Netron的基本使用介绍
  • UNet改进(20):融合通道-空间稀疏注意力的医学图像分割模型
  • 客户频繁问询项目进度,如何提高响应效率
  • Java 中的多线程实现方式
  • Spring AI 系列之八 - MCP Server
  • NFS文件存储及部署论坛(小白的“升级打怪”成长之路)
  • (鱼书)深度学习入门2:手搓感知机
  • PostgreSQL创建新实例并指定目录
  • 下一代防火墙混合模式部署