问题描述
在我的 BSc 论文(5.4 Linux 内核的 rootkit)的开发过程中,我发现自己必须在内存中识别一个函数地址(即 do_syscall_64()
的地址)。我事先不知道,因为有 KASLR。
我正在做的是:
- 通过 MSR 检索系统调用处理程序;
- 从
entry_SYSCALL_64
的基地址开始扫描内存位置,这是系统调用处理程序的代码块,直到找到对do_syscall_64()
的实际调用; - 在操作码(即
e8
)之后隔离 4 个字节,即调用后执行流将跳转到的偏移量:
e8 c4 bd f8 ff call 0xffffffff81b8be40 <do_syscall_64>
那么,我应该如何处理检索到的十六进制偏移量?
我发现在此 call
指令之后指定的地址是基本代码段的偏移量。
我是否需要将偏移量转换为十进制并将其添加到基本代码段地址中?
提前致谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)