捕获系统调用但从 libc 中排除系统调用

catch syscall but exclude syscalls from libc

我需要捕获不是源自 libc 的 mprotect 系统调用,我该怎么做?

我不确定 gdb 是否可以过滤库名称:

Catchpoint 2 (call to syscall mprotect), 0x00007ffff74cde57 in mprotect () from /lib64/libc.so.6

I need to catch mprotect syscalls that is not originating from libc

通过过滤掉来自 libc.so.6 中特定地址的 mprotect 调用,您可能 几乎 达到预期的结果 -- 大多数 呼叫应该来自该地址:

(gdb) cond 2 $rip != 0x00007ffff74cde57

如果这还不够好,您应该能够使用嵌入式 Python 在达到捕获点后评估任意条件,使用 Breakpoint.stop 函数。