Systemtap:如何探测mq_notify() 调用的函数

编程语言 2026-07-12

我还是个初学者,只想为了好玩学习漏洞开发。于是我找到了一个关于逐步进行内核利用的博文。
https://blog.lexfo.fr/cve-2017-11176-linux-kernel-exploitation-part1.html

但它写道:

让我们在被调用于 mq\_notify() 的每个函数上添加一个探针,以查看代码流并重新运行漏洞利用。

但我不知道如何探测由 mq_notify() 调用的每个函数,无论是使用systemtap还是其他方法。

解决方案

你通常不会通过手动列出每个函数来实现这件事。在systemtap中,相关的特性是 callee / callees

首先在你的内核中定位实际的内核符号,因为它可能是 \_\_x64\_sys\_mq\_notifydo\_mq\_notify 等等,而不是字面上的 mq\_notify

stap -L 'kernel.function("\*mq_notify\*")'

然后探测它的直接调用者或递归调用者,例如:

probe kernel.function("\__x64_sys_mq_notify").callees(2).call {  
    printf("%s -\> %s(%s)\\n", thread_indent(1), ppfunc(), $$parms)  
}  

probe kernel.function("\__x64_sys_mq_notify").callees(2).return {  
    printf("%s \<- %s = %s\\n", thread_indent(-1), ppfunc(), $$return)  
}

如有需要增加深度;如果你并不特别需要systemtap,内核的 function\_graph 跟踪器通常是捕获完整调用流的更简单方式。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章