Linux内核rootkit:从内存中读取数据并将检索到的数据用作偏移量

问题描述

在我的 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 (将#修改为@)