arm64 内核 inline hook

本文探讨了Linux4.15和4.19内核版本中SyscallTable的安全性和hook机制。详细分析了4.19版本新增的systable保护措施,以及如何通过替换物理地址指向或使用inlinehook对内核进行更改的方法。深入讲解了Arm64环境下寄存器保存恢复及指令修复执行的技术细节。

linux 内核对于安全可能是比较重要的一环。

关于syscall table 表替换的问题

这里以linux 4.15和4.19为代表的说明我遇到的问题。

syscall hook 4.15 4.19
拥有可读写状态 hook成功 hook失败

这里似乎到4.19添加了对systable的保护。

如果非要对systable进行hook,可能替换这页表,改变物理地址指向是一种解决办法。

还有就是直接inline hook对内核进行更改。

inline hook的实现

一、寄存器的保存和恢复

STP X1, X0, [SP, #-0x10]
LDR X0, 8
BR X0
[TARGET_
ADDRESS] (64bit)
LDR X0, [SP, -0x8]

这里简化了,实际上我们需要将所有的寄存器进行保存和恢复。

Android-Native-Hook-Practice-Arm64

BR指令是对绝对跳转
B 指令是相对于pc寄存器的跳转
LR是用于保存函数调用的返回地址的link register。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值