Leoric
Leoric 是一个在 Android 上实现黑科技保活方法的概念验证,它可以对抗任意 Android 版本上的强制停止杀进程。
Leoric 是 Dota 中的英雄"骷髅王",本项目名取自骷髅王的大招"重生"。
编译环境
JDK 11 + NDK 19.2.5345600
复现方法
虽然理论上这个方法可以支持任意的 Android 版本,但本概念验证在 Android 9.0 和 Android 10 上进行了测试。具体使用方式请参见 demo 项目。
实现原理
应对方法
以下是一种简单的方法来杀死 Leoric:
ps -A | grep `ps -A | grep me.weishu.leoric | awk '{print $1}' | head -1` | awk '{print $2}' | xargs kill -19 && am force-stop me.weishu.leoric
对于系统,有两种思路可以选择:
- 在强制停止期间加入不允许启动新进程的逻辑
- 修改强制停止的杀进程逻辑为:预先收集好所有进程再进行终止(如有必要还可以先发送 SIGSTOP)
在 Android 14 中,系统加入了在强行停止前冻结应用全部 cgroup 的逻辑,本方案失效。
联系我
郑重声明
本项目仅供学习研究使用,出现任何问题概不负责。此外,本概念验证距离实际投入使用还有很长的路要走,请不要妄想直接接入代码就能获得永生。
公开代码的目的是为了推动厂商对系统进行改进,提供应对方法;请勿滥用!!
许可证
版权所有 (C) 2015,Mars Kwok
版权所有 (C) 2020,weishu
基于 Apache License 2.0 版本授权; 除非遵守许可,否则不得使用此文件。 您可以在以下位置获得许可证副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则根据许可分发的软件是基于"按原样"分发的, 不附带任何明示或暗示的担保或条件。 有关许可下的特定语言管理权限和限制,请参阅许可证。