自启动策略调研

广播拦截策略

1.流程图

广播发送

├─ 特权进程(Root/Shell) → 放行

├─ 系统进程(UID≤1000) → 自动启动校验 → 非法广播? → 拦截

│   ├─ 黑名单匹配 → 拦截

│   └─ 用户/白名单校验 → 受限用户? → 拦截

│       ├─ 小部件/智能白名单 → 放行

│       └─ 普通应用 → 分类限制检查 → 命中? → 拦截

├─ 动态白名单链 → 匹配任一? → 放行

└─ 特殊广播处理 → 黑名单/分类限制 → 拦截

2.拦截策略

拦截类型

触发条件/判断逻辑

处理结果

超级省电模式拦截

激活且应用不在白名单()

拦截

系统进程校验

系统进程(UID≤1000)触发:

• 非法广播(activityInfo==null)

• 黑名单匹配()

拦截

多用户限制

非主用户/访客用户中:

• 受限用户(isRestrictUser)

• 特定应用(拼多多/支付宝等,)

拦截

白名单豁免

满足任一条件:

• 系统应用/小部件()

• 智能白名单()

• Action白名单()

放行

分类限制检查

非四大组件类型(!isCpnType)且非Top应用(!isTopPkg),匹配全局/组件限制列表

拦截

动态进程状态检查

同时满足:

• 非默认允许启动(!)

• 非活跃进程(!)

拦截

特权进程豁免

Root/Shell进程(isRootOrShell)

放行

实验版本特殊处理

实验版本()且非全局黑名单

放行

Provider拦截

1.流程图

0

2.拦截策略

拦截类型

触发条件/判断逻辑

处理结果

设计目的

系统进程豁免

调用方进程UID≤10000

放行

保障系统核心功能稳定性

全局黑名单拦截

应用在全局禁止列表

拦截

防止恶意应用滥用Provider25

组件黑名单拦截

满足以下任一条件:

• 调用方为null且Provider在黑名单

• 调用方进程名不包含Provider包名且Provider在黑名单

拦截

限制未授权访问或跨应用滥用

超级省电模式拦截

超级省电模式激活且未通过rSPS校验

拦截

极端场景下限制非核心应用资源占用

分类限制拦截

匹配全局/组件分类限制规则(如非四大组件类型)

拦截

防止非必要后台数据共享56

动态状态放行

满足以下任一条件:

• 默认白名单()

• 活跃进程()

放行

优化内存和性能

多维度白名单放行

满足以下任一条件:

• 保护白名单()

• 关联白名单()

• Provider组件白名单()

• 调用方在白名单()

放行

保障授权应用或组件正常运作

Activity拦截

1.流程图

0

2.拦截策略

检查类型

处理结果

关联方法/配置

设计目的

无效Intent检查

拦截

handleWhiteListCheck参数校验

防止无效或恶意Intent

调用方白名单

放行

预置调用方包名白名单

授权应用豁免拦截

目标包名白名单

放行

预置目标包名白名单

保护核心应用组件

目标组件白名单

放行

预置Activity类名白名单6

精确控制组件级访问

自调用白名单

放行

同应用内调用校验3

允许应用内部安全跳转

关联白名单

放行

跨应用关联授权(如合作应用)6

支持生态内协作

全局黑名单

拦截

全局禁用应用列表16

封禁高风险或违规应用

推送黑名单

拦截

禁止非关联应用弹窗3

防止广告/骚扰推送

关联黑名单

拦截

预置危险调用关系6

阻断恶意应用协作

锁屏黑名单

拦截

锁屏禁用组件列表3

保障锁屏安全性与功耗

超级省电模式

拦截

InSuperPowerSavingMode()1

极端场景下限制非核心功能

分类限制

拦截

按组件类型(如后台Activity)过滤3

Service拦截

1.流程图

graph TD

A[调用shouldPreventStartService] --> B{type=""?}

B -- Yes --> C{UID≤10000?}

C -- Yes --> Z[放行]

C -- No --> D{组件黑名单且非自调用?}

D -- Yes --> Y[拦截]

D -- No --> E{Action黑名单且非自调用?}

E -- Yes --> Y

E -- No --> F{BlackguardList命中?}

F -- Yes --> Y

F -- No --> Z

B -- No --> G{参数无效?}

G -- Yes --> Z

G -- No --> H{全局黑名单?}

H -- Yes --> Y

H -- No --> I{分类限制?}

I -- Yes --> Y

I -- No --> J{startService?}

J -- Yes --> K{目标进程未启动且不允许跨进程?}

K -- Yes --> Y

K -- No --> Z

J -- No --> L{bindService?}

L -- Yes --> M{系统应用?}

M -- No --> N{命中非系统白名单?}

N -- Yes --> Z

N -- No --> Y

M -- Yes --> O{通知/Job/Sync白名单?}

O -- Yes --> Z

O -- No --> P{GCM服务且非体验版?}

P -- Yes --> Q{自启动/LRU白名单?}

Q -- Yes --> Z

Q -- No --> Y

P -- No --> Y

2.拦截策略

拦截场景

触发条件

放行条件

优先级

系统进程豁免

调用方UID ≤ 10000

直接放行

最高

组件黑名单

组件类名在黑名单 && 非自调用(!callerApp.processName.contains(pkgName))

自调用或非黑名单组件

Action黑名单

Action在黑名单 && 非自调用

Action为空或非黑名单

BlackguardList拦截

Action在特殊黑名单

无豁免条件

全局应用黑名单

包名在全局黑名单

体验版且非核心黑名单(isExpVersion && !isExGlobalBlackList)

分类限制拦截

应用分类受限(如后台服务)

默认放行标记/白名单/LRU进程

跨进程启动拦截

startService&& 目标进程未启动

允许跨进程启动(isAllowStartFromStartService返回true)

非系统应用绑定拦截

bindService&& 非系统应用调用

Root/Shell进程或命中任意白名单(包名+Action/组件/Job/Sync)

系统应用绑定拦截

bindService&& 系统应用调用

通知服务/Job/Sync白名单豁免

GCM绑定拦截

GCM服务 && 非体验版

自启动白名单/默认放行/LRU进程

RemovePendingJob 

1.流程图

0

2.拦截策略

检查条件

命中结果

逻辑说明

优先级

包名为空或无法获取应用信息

移除

参数无效防御性处理

最高

应用分类限制检查命中(如后台限制模式)

移除

通过检测后台/电池优化等场景

默认放行标记(isDefaultAllowStart)

放行

系统标记为关键应用(如系统服务)

自启动白名单(isInAutoBootWhiteList)

放行

用户手动配置或厂商预装应用

LRU近期使用进程(isInLruProcessesLocked)

放行

关联AMS的最近使用进程列表,提升用户体验

bringUpServiceLocked拦截

1.流程图

0

2.拦截策略

检查条件

结果

逻辑行为

全局开关关闭(mSwitch=false)或包名为空

放行

直接返回false,允许继续执行启动流程

非标准启动类型(非REGULAR_PROCESS_STARTUP)且包名受限制

拦截

若包名不在白名单(),返回true阻止启动

系统限制后台启动(())且包名在限制列表()

拦截

更新限制计数()并返回true

包名在LRU近期使用进程列表()

放行

即使命中限制列表,LRU机制仍放行

StartInstrumentation拦截

1.流程图

0

2.拦截策略

检查条件

结果

逻辑行为

基础参数无效(组件名/应用信息/包名为空)

放行

直接返回false,允许StartInstrumentation执行

实验版本或白名单应用

放行

跳过所有限制检查

Oneway Binder调用(callingPid=0)

拦截

全局开关开启或包名在黑名单时拦截

Root/Shell进程

放行

系统级调用不限制

LRU进程

放行

用户近期使用的应用豁免限制

关联调用黑名单命中

拦截

记录拦截事件并更新统计

StartInstrumentation拦截

1.流程图

0

2.拦截策略

检查条件

拦截逻辑

应用进程清理后触发重启

若在息屏黑名单中则拦截自启动

屏幕唤醒锁释放时检查

白名单应用放行,Persist限制应用拦截

Alarm定时任务触发时

息屏状态且命中黑名单则忽略Alarm

判定标准

行为

----------------------------------

-----------------------------------------------------------------------------

包名在熄屏黑名单列表

拦截(返回true)

包名在系统白名单(如系统核心应用)

放行(返回false)

包名在Persist限制列表

拦截(返回true)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/89232.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/89232.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MFC/C++语言怎么比较CString类型最后一个字符

文章目录🔧 1. 直接下标访问(高效首选)🔍 2. ReverseFind 反向定位(语义明确)✂️ 3. Right 提取子串(需临时对象)⚙️ 4. 封装工具函数(推荐健壮性场景)⚠️…

【Cortex-M】异常中断时的程序运行指针SP获取,及SCB寄存器错误类型获取

【Cortex-M】异常中断时的程序运行指针SP获取,及SCB寄存器错误类型获取 更新以gitee为准: gitee 文章目录异常中断异常的程序运行指针SP获取SCB寄存器错误类型获取硬件错误异常 Hard fault status register (SCB->HFSR)存储器管理错误异常 SCB->C…

项目流程管理系统使用建议:推荐13款

本文分享了13款主流的项目流程管理系统,包括:1.PingCode;2.Worktile;3.泛微 E-Office;4.Microsoft Project;5.简道云;6.Zoho Projects;7.Tita 项目管理;8.Oracle Primave…

neovim的文件结构

在 Linux 系统中,Neovim 的配置文件主要存放在以下目录结构中: 📁 核心配置目录路径内容描述~/.config/nvim/主配置目录 (Neovim 的标准配置位置)~/.local/share/nvim/Neovim 运行时数据(插件、会话等) 🗂️…

【网易云-header】

网易云静态页面&#xff08;1&#xff09;效果htmlcss效果 html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">&…

Android开发知识点总结合集

初级安卓开发需要掌握的知识点主要包括安卓四大组件、Context、Intent、Handler、Fragment、HandlerThread、AsyncTask、IntentService、Binder、AIDL、SharedPreferences、Activity、Window、DecorView以及ViewRoot层级关系、触摸事件分发机制、View绘制流程、自定义View。 1…

如何通过域名白名单​OVP防盗链加密视频?

文章目录前言一、什么是域名白名单​OVP防盗链二、域名白名单​OVP防盗链的实现原理三、如何实现域名白名单​OVP防盗链加密视频总结前言 用户原创视频资源面临被非法盗链、恶意嵌入的严峻挑战&#xff0c;盗用行为不仅侵蚀创作者收益&#xff0c;更扰乱平台生态秩序。域名白名…

密码学系列文(2)--流密码

一、流密码的基本概念RC4&#xff08;Rivest Cipher 4&#xff09;是由密码学家 Ron Rivest&#xff08;RSA 算法发明者之一&#xff09;于 1987 年设计的对称流加密算法。它以简单、高效著称&#xff0c;曾广泛应用于网络安全协议&#xff08;如 SSL/TLS、WEP/WPA&#xff09;…

Drools‌业务引擎

drools引擎使用 官网介绍 一、底层原理 ReteOO 网络 • 本质是一张“有向无环图”&#xff0c;节点类型&#xff1a; – Root / ObjectTypeNode&#xff1a;按 Java 类型分发事实 – AlphaNode&#xff1a;单对象约束&#xff08;age > 18&#xff09; – BetaNode&#xf…

linux的磁盘满了清理办法

今天测试系统的某个磁盘满了&#xff0c;需要看一下&#xff0c;可以看到的是&#xff0c;已经被占用百分之百了&#xff0c;某些服务运行不了了&#xff0c;需要清一下&#xff0c;这个我熟看哪个目录占用空间大cd / du -sh * ##找到占用最大&#xff0c;比如cd /home cd /hom…

阿里开源项目 XRender:全面解析与核心工具分类介绍

阿里开源项目 XRender&#xff1a;全面解析与核心工具分类介绍 在开源技术飞速发展的浪潮中&#xff0c;阿里巴巴推出的 XRender 作为专注于表单与数据可视化的开源框架&#xff0c;凭借独特的设计理念和强大功能&#xff0c;已在开发者群体中崭露头角。XRender 以 “协议驱动…

网络安全初级--搭建

一、Docker搭建apt-get install docker.io docker-compose 下载docker 配置docker代理 a.创建对应的以及对应的文件mkdir /etc/systemd/system/docker.service.dvim /etc/systemd/system/docker.service.d/http-proxy.confb.写入以下内容[Service]Environment"HTTP_PROXYh…

文心一言4.5深度评测:国产大模型的崛起之路

在⼤语⾔模型竞争⽇益激烈的今天&#xff0c;百度推出的文⼼⼀⾔4.5凭借其在中文处理上的独特优势&#xff0c;正在成为越来越 多开发者的选择。经过为期⼀周的深度测试和数据分析&#xff0c;我将从技术参数、性能表现、成本效益等多个维度&#xff0c; 为⼤家呈现这款国产⼤模…

科技的成就(六十九)

631、摄影术的先驱 1801年&#xff0c;德国物理学家约翰威廉里特&#xff08;Johann Wilhelm Ritter&#xff09;发现了紫外线。他注意到&#xff0c;太阳光谱中紫色一侧光谱之外的位置的不可见射线比紫光更快地使氯化银试剂变暗&#xff0c;他将其称为“化学射线”。后来这种射…

用Golang gRPC异步处理:释放并发性能的秘密武器

目录 章节一:为什么gRPC异步处理是并发性能的“加速器” 异步的本质:解放Goroutine的潜能 异步gRPC的适用场景 章节二:从零开始:搭建一个异步gRPC服务 准备工作:定义Protobuf 实现同步gRPC服务 迈向异步:初步改造 章节三:用Worker Pool模式榨干并发性能 Worker …

MCP终极篇!MCP Web Chat项目实战分享

目录 前言 MCP Web Chat 功能概要说明 MCP Web Chat代码调用结构说明 api动态生成MCP Server 方法一&#xff08;之前的方法&#xff09; 方法二&#xff08;现在的方法&#xff09; 做个比较 相关代码 相关问题解决说明 稳定性 由此引申而来的异步任务问题 MCP周…

破解VMware迁移难题

理解VMware迁移的常见挑战 VMware迁移过程中可能遇到的难题包括兼容性问题、性能瓶颈、数据完整性风险以及网络配置复杂性。识别这些问题是制定有效迁移策略的基础。 评估当前环境与目标环境 详细分析源VMware环境的配置、虚拟机数量、存储类型和网络拓扑。对比目标环境的硬件和…

15-STM32F103RCT6的FLASH写入

STM32F103RCT6的FLASH写入 1.//*******************************固件升级地址信息******************************// #define STM32_FLASH_BASE 0x08000000 //固件起始地址 #define FLASH_APP_ADDR 0x08005000 //APP开始地址 #define FLASH_PARA_ADDR 0x0803C000 //固件关…

PPO:近端策略优化算法

温馨提示&#xff1a; 本篇文章已同步至"AI专题精讲" PPO&#xff1a;近端策略优化算法 摘要 我们提出了一类新的用于强化学习的 policy gradient 方法&#xff0c;该方法在与环境交互以采样数据和使用随机梯度上升优化一个“代理”目标函数之间交替进行。与标准的…

数据结构的算法分析与线性表<1>

一、算法分析&#xff1a; 由于语句执行一次的实际所需时间与机器的软硬件有关&#xff0c;则算法分析是针对语句执行次数&#xff0c;而非执行时间。 时间复杂度 计算时间复杂度&#xff1a; 常量阶 如果算法中的n是固定的&#xff0c;或者说n是常数&#xff0c;或者时间复杂…