近期工作总结

近期分析了一款应用的自启动,防强杀的方式,把需要记录的东西写下以供日后回忆。
发现一款应用在很多手机上能自启动,防止am force-stop ,并且没有root权限,这就是它牛逼的地方。
准备
1.编译android 5.1.1,单独编译framework 中的模块,service.jar 在ActivityManagerService ActiveServices中加入log,log点就是在启动服务的接口,启动进程的接口,编译这部分看前面那片记录。编译好后直接push到相应目录重启就行了。

根据现有的log分析行为
这里写图片描述

关键点是Scheduling restart of crashed 后面的地方 。

然后我们开始分析这个启动过程。有助于了解启动者究竟是谁?

在ams中是这样的:
1

startServiceLocked中这么调用:
2

3

4

5

6

7

8

9

10

用上面10张图说明了AMS通过启动服务来启动进程的流程,在这里面可以知道真正的调用者是谁。
简单说就是:
ActivityManagerService.java
1. startService
ActiveServices.java
2. startServiceLocked
3.startServiceInnerLocked
4.bringUpServiceLocked
ActivityManagerService.java
5.startProcessLocked
6.startProcessLocked
7.startProcessLocked
启动进程

还有就是知道setting.apk中强制停止做了什么?
这里写图片描述

看到pm做的事情不禁感慨这个应用做的真不错。

2.安装android studio 在ubuntu上,这个需要oracle的jdk。但是编译源码又需要open jdk。所有要切换需要update-alternatives。

sudo update-alternatives –config java 进行切换

通过切换然后看
java -version
来看是否切换成功了。
这里写图片描述
android studio下载就去官网但是记住要在ubuntu下面的浏览器下载不然下载的不是linux版本的,为了提高效率,记下下载链接然后用迅雷下载这样可以达到20mb/s很大程度的提高了速度。到opt目录下去解压文件然后执行bin下的 studio.sh

cd /opt/android-studio/bin
./stuido.sh

3.反编译apk,有那种国外的在线反编译平台直接上传apk就可以了。
查看log到底是哪个东西在作怪,根据上面我们在ams中加入的log可以很清晰的发现一个现象,一个服务被干掉之后自己把自己起来了?!WTF
这里写图片描述

这里写图片描述

最后发现这货和ams进行了通信,并且在lib下用一个libdemon.so的文件做了一些事情
比如进程守护,针对MediaProvider进行写入等
这里写图片描述

这里写图片描述
4.分析apk行为在什么情况下会启动?是谁启动的?怎么让它启动的?它是怎么做到am force-stop 还能重启的?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值