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。

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

被折叠的 条评论
为什么被折叠?



