LBE 是业界比较出名的 Android 软件。对作者的能力深感佩服,同时抱着学习的态度,需要研究一下这个软件工作原理。请看分析过程!
看运行现象: 因为他是拦截权限的,所以第一时间看系统服务,发现在系统服务中出现了三个服务 1. sec_controller_phone 2. com.lbe.security.service.IFirewallService 3. sec_controller_main
看程序的“异常”情况 servicemanager、system_server、phone 三个进程被加载了 libservice.so 动态库
我们打开 APK 包,不难发现,和普通的程序有很多类似的东西,就不看了,主要在 libs 下有三个 so 库
1. libloader.so 根据以往经验这个是用来装载的,应该是注入进程的,进程应该是上面的 servicemanager、system_server、phone 2. libservice.so 是被目标程序所加载 3. 其它暂时不关注
注入过程不研究,如果让我实现这样的权限拦截的话,我会怎样设计呢?
程序A 系统服务 我的服务 中转服务 LBE ---------------------------------------------------------------------------------
>>> LBE 建立中转服务,注册一个回调,方便有事件得到通知。好弹出对话框。 >>> 替换某些“系统服务”中的某服务为“我的服务” >>> 程序A 请求 “系统服务” 服务的时候相当于请求了“我的服务”, “我的服务”再调中转服务提前处理,然后再调原来的“系统服务” >>> 完成检查
系统服务进程在 system_server 进程中。 服务管理在 servicemanager 进程中。
对应上面的运行现象不难发现,其实和我所设想的方式差不多,具体细节为了对 LBE 的尊重,不再透漏! 有意者自己查看相应 Android 源码,能有所收获!
需要写一个 Demo 来验证该设想了! |
|
来自: techres > 《AndroidFramework》