5、H-Binder:安卓系统中强化的Binder框架

H-Binder:强化安卓Binder安全

H-Binder:安卓系统中强化的Binder框架

1. 系统调用拦截与保护

1.1 系统调用控制流钩子

为防止rootkit篡改向量页或钩子页的物理地址以绕过拦截,虚拟机管理程序(hypervisor)会冻结从向量页到钩子代码的控制流路径,具体步骤如下:
1. 将HCR的陷阱虚拟内存(TVM)位设置为0 × 1,以拦截内核对SCTLR和转换表基址寄存器1(TTBR1)的写访问,阻止对SCTLR.V位和TTBR1的所有更改。
2. 从TTBR1指向的一级页表根开始遍历,找到指向向量页的页表页(向量页地址取决于SCTLR.V位,为0×00000000或0×FFFF0000),通过配置二级页表将此路径上的所有页面设置为只读,防止向量页物理地址被重新映射。
3. 同样从TTBR1指向的一级页表根开始遍历,找到指向钩子代码页的页表页,若对该路径上的页面更新影响钩子代码映射,则不允许更新。
4. 将向量页和钩子代码页都设置为只读,防止内核篡改其内容。

通过这些步骤,系统调用时硬件能在预定义地址定位向量页和钩子页,且因页面只读,能按预期执行正确的钩子代码。

1.2 系统调用返回的线程级拦截

系统调用返回时不会抛出异常,为拦截该事件,需注入异常。由于线程不共享栈,可通过操作相关线程的用户空间栈,使系统调用返回后的栈操作被捕获到虚拟机管理程序。具体步骤如下:
1. 将一个空的物理内存页映射到目标应用的堆中,此页称为保险库页(vault page),虚拟机管理程序通过配置二级页表将其设置为不可访问,以引入页面错误异常。保险库页需映射到应用的虚拟地址空间,否则异常将被内核捕获。
2. 当发出接

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值