是否可在已root的安卓设备上阻止APP安装?具体如何实现?
已Root安卓设备应用安装拦截解答
能否在已Root安卓设备上实现应用安装拦截
完全可以。安卓应用安装流程由系统服务PackageManagerService、系统安装器PackageInstaller统一管控,root权限可以直接修改系统逻辑、拦截系统调用、修改系统配置,不仅可以实现全局安装拦截,还可以支持按包名、安装来源等维度的细粒度拦截。
具体实现方案
- 全局禁用安装(最简单方案)
直接修改系统全局配置项,执行root shell命令即可完成全局拦截,覆盖系统安装器、adb安装、三方应用唤起安装的所有场景:settings put global package_disable_app_install 1
如需恢复安装权限,执行settings put global package_disable_app_install 0即可。 - 细粒度自定义拦截(Xposed/LSPosed方案)
root后刷入Xposed或LSPosed框架,编写模块Hook安装流程核心节点,可自定义黑白名单、拦截提示、触发规则:- Hook
PackageManagerService的installPackageAsUser等安装核心方法,匹配拦截规则后直接返回失败结果,终止安装流程 - 拦截
Intent.ACTION_PACKAGE_INSTALL、Intent.ACTION_PACKAGE_ADDED系统广播,在安装流程的广播节点终止操作
- Hook
- 替换系统安装器方案
root后将自研的自定义安装器替换系统原生PackageInstaller,所有安装请求会优先流转到自定义安装器,可在安装器内自主判断是否放行安装,同时可以配合权限管控,禁止其他进程直接调用底层安装接口绕过安装器。 - 底层命令拦截方案
修改/system/bin/pm的执行权限,或者Hook pm命令的执行逻辑,仅放行符合规则的pm install相关命令调用,可拦截通过shell、adb发起的安装请求。
内容的提问来源于stack exchange,提问作者Yogesh Marathe
相关产品推荐
相关产品推荐

