gpt4 book ai didi

linux - 如何获取 native 系统调用地址

转载 作者:太空狗 更新时间:2023-10-29 11:22:52 25 4
gpt4 key购买 nike

在 Linux 上,我试图确定哪些系统调用被 Hook (系统调用 Hook ),哪些没有。我需要以下问题的答案:

  1. 如何从用户空间(具有 root 访问权限)读取 Hook 系统调用的地址?

  2. 如何获取原始系统调用的地址?

谢谢。

最佳答案

系统调用表存放在sys_call_table[]下面是在linux kenrel中进入系统调用的汇编代码,entry.S:

sysenter_do_call:
425 cmpl $(NR_syscalls), %eax
426 jae syscall_badsys
427 call *sys_call_table(,%eax,4)
428 movl %eax,PT_EAX(%esp)
429 LOCKDEP_SYS_EXIT
430 DISABLE_INTERRUPTS(CLBR_ANY)
431 TRACE_IRQS_OFF
432 movl TI_flags(%ebp), %ecx
433 testl $_TIF_ALLWORK_MASK, %ecx
434 jne sysexit_audit

由于sys_call_table在内核空间,用户态程序不能访问这个符号。您将不得不编写一个内核模块。在其中,您可以打印出存储在 sys_call_table[] 向量数组中的地址。

关于linux - 如何获取 native 系统调用地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11080302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com