Linux - uprobe的使用及检测

uprobe是Linux内核中的一个动态跟踪工具,它允许用户在内核运行时动态地插入探测点(probe points)来收集调试和性能数据。

主要特点:

  • uprobe可以在用户空间程序的任意位置插入探测点,而无需修改或重新编译源代码。

  • 它能够收集函数调用、返回值、参数、局部变量等运行时信息。

  • 对程序性能的影响很小,因为probe points只在需要时才被激活。

uprobe相比传统调试工具的优势在于它能在生产环境中安全使用,且不需要重启系统或重新编译程序。不过需要注意的是,使用uprobe需要较高的系统权限,通常需要root权限。

检测方法

朴实无华的检测方法就是

cat /sys/kernel/debug/tracing/uprobe_events

一般来说正常的设备不会挂载debugfs,如果挂载了说明这个设备极大可能不是很安全!

这种检测方法没什么鸟用,我们需要在内存方面检测 uprobe hook,当函数被 uprobe hook 时,内核会在函数入口点插入一个 int3(0xCC) /BRK #5断点指令,可以通过读取函数开头的机器码来判断是否存在这个断点指令。

代码懒得贴了,自己百度去!这里的检测以及介绍不全,只不过是我的随手记,其实maps里面也有uprobe的信息,自己去看看吧!