[TOC]
-
插件化技术,通过宿主可将一个插件 APK 加载启动,而不用提前配置好插件内的四大组件。以此技术为基础,将完整应用作为插件加载至宿主内部执行,为实现沙盒打下基础。
-
系统服务 Hook 技术,通过切入本地进程和系统服务之间的进程间通讯过程,改变原始系统服务的行为,欺骗插件应用以达到提供虚拟沙盒环境的目的。
-
IO 重定向 Hook 技术,通过重定向插件应用进程对 IO 的原始路径访问,为沙盒应用数据隔离提供支持。
Server 端进程放置虚拟沙盒服务,为沙盒环境提供支持。
Main 端进程为宿主进程,宿主负责沙盒的用户界面。
Client 端进程为沙盒内部运行的应用进程,每一个 Client 端进程对应一个子应用。
Client 端或 Server 端产生的其他进程。
用户 id 从 0 开始递增,每个用户内部不能同时拥有多个同一个包名的多开应用,即一个应用需要多开几个,那么就需要几个用户。
每个用户内部安装的应用可以相互通信,像是在同一个系统中运行(待确认)。
通过 Hook 客户端进程与系统服务 ActivityManagerService
的进程间沟通过程,使沙盒内应用向服务端请求 startActivity
时的为改变,将沙盒内应用的 activity 替换为提前注册的占桩 activity,欺骗 ActivityManagerService
从而启动未在清单文件中注册的 activity,然后在服务端返回结果请求客户端启动 activity 时还原为原始沙盒内应用的 activity,完成 activity 的启动。
通过 Hook 相关系统服务,修改其中提供信息的相关方法,或重定向带有相关运行时信息的文件,使沙盒内子应用访问到的系统服务不同,访问到的系统文件改变,导致应用获取到的信息不同。