首页 > 代码库 > Android 进程常驻----开机广播的简单守护以及总结
Android 进程常驻----开机广播的简单守护以及总结
这是一个轻量级的库,配置几行代码,就可以实现在Android上实现进程常驻,也就是在系统强杀下,以及360获取root权限下,clean master获取root权限下都无法杀死进程
支持系统2.3到6.0
支持大部分设备,包括三星,华为,oppo,nexus,魅族等等
可以简单对开机广播进行保护
github地址:
https://github.com/Marswin/MarsDaemon
原理分析:
Android 进程常驻(0)----MarsDaemon使用说明
Android 进程常驻(1)----开篇
Android 进程常驻(2)----细数利用android系统机制的保活手段
Android 进程常驻(3)----native保活5.0以下方案推演过程以及代码详述
Android 进程常驻(4)----native保活5.0以上方案推演过程以及代码详述
Android 进程常驻(5)----开机广播的简单守护以及总结
正文:
终于一口气写完了,这是去年在一个月搞的成果,也算是对自己有了一个交代。
其实保活就是两个要点:
1、怎样监听到进程挂掉
2、怎样把进程拉起来
把这两个点都解决,问题就解决了。
大家把我之前的文章都看完,会发现这两个点上都有好多种策略,那么在不同的手机上,两个点的不同策略就有多种组合方式,也也是我适配手机的主要手段。
当时我适配测试的手机有
还要说一句,有的手机会在你系统设置force close的时候,显示已经杀掉了进程,但是其实没有真的杀掉,比如魅族。。。
可以shell进去用命令 ps | grep mars来查看所有MarsDaemon的进程
如果有root权限,可以使用kill -9命令来杀进程,但是效果没有force close和360\cm 杀的好
最后要说一下,进程常驻是保证不死,但是首先要活一次才行
换句话说好多人问我是不是要开机的时候启动一次,怎么启动
答案肯定是开机广播
但是现在有第三方软件获取root权限之后可以把我们的开机广播给禁掉,那么MarsDaemon的保护活也就没有意义了
那么360/cm是怎么禁用我们的广播的呢?
我们站在他的角度来思考这个问题:
1、他阻止系统发出开机广播,开机之后立刻注入SystemService
2、系统发出广播,他让我们收不到
3、我们收到广播之后,他把我们return掉
4、他没能return掉我们,但是立马杀掉我们
ok,第一个太难,如果他能做到,我们没有root所以无解。
第四个我们没有威胁,因为MarsDaemon就是用来反被杀的
第三个他要注入我们,可以加壳之类防御
那么第二个他是怎么做的呢? 系统方法:
没错,他可以将一个组件设置为enable或者disable,如果把我们的开机广播设置为disable,那么无疑是用不了。
可是这个他们调用不了的,需要系统签名才行。
但是他们可以用android shell中的pms 的pm命令达到同样的效果:
只要有root权限就可以使用这个pm disable componentsName命令。第三方安全软件,我们已经默认他们有root权限了,那么我们该怎么办呢?
MarsDaemon在工程里面有这样一个类
/MarsDaemon/LibMarsdaemon/src/main/Java/com/marswin89/marsdaemon/PackageUtils
是的,因为是我们自己的组件,所以设置他不需要任何权限,只需要在有些时机顺便重置一下开机广播的状态就好(比如每次进程重启的时候,网络变化的时候,开关屏的时候),还有一个就是注册一个关机广播,每次关机的时候重置一下开机广播的状态,从而达到保护开机广播的作用。
在CleanMaster ,给了root权限之后,禁用开机广播,然后重启手机,开机广播失效;然后加上我的这个方法,再禁用掉,开机广播ok!
很简单的一个小tip
Android 进程常驻----开机广播的简单守护以及总结