问题标签 [kprobe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
108 浏览

linux - 需要调试 MMAP 那么 MMAP 的目标文件或包含 MMAP() 的模块在哪里——如何在 linux 中找到?

我正在尝试使用 kprobe 调试 MMAP,但我不知道如何在 MMAP 中设置断点。在我的 lib/modules 中,我搜索但找不到类似于包含模块的 mmap。如何使用 kprobe 调试 mmap,所以我需要例程的目标文件。

我只需要在不同的位置设置断点。所以我可以使用radare2来查看程序集并检查我将在KProbe模块中指定的内存位置,这些内存位置将被注入到包含MMAP函数的例程中的MMAP函数中,以进行调试。

0 投票
1 回答
53 浏览

c - Kprobe 和 Uprobe 如何在可执行文件中插入调试恶作剧——它们是否扩展了正在运行的模块或程序的地址空间

我只是无法理解调试器和探测工具的想法。

从技术上讲,如何在运行的内核模块或用户空间应用程序中插入调试 printk 语句——使用 Kprobe 和 Uprobe。使用什么术语来定义 Kprobe 和 Uprobe 在内存方面的行为 - 如何在程序运行状态下拉伸地址空间。

0 投票
0 回答
30 浏览

linux-kernel - Failed to kprobe kernel function in Linux-5.8.18

I just checked kprobe in Linux-5.8.18 with the following codes, but it seemed not work as expected.

I tried to probe the do_madvise() <I tried to probe the system call function of sys_madvise, but I did NOT find what is the right function name to probe by reading /proc/kallsyms, So I turned to probe do_madvise.>

The register_kprobe() succeeded, but when an application called madvise() in user space, there is NO kernel log from the kprobe handlers I provided. It seemed that kprobe handlers are NOT being called or the do_madvise() is NOT being probed properly.

Thanks,

0 投票
0 回答
55 浏览

c - 在不使用 current 的情况下获取指向当前进程的 task_struct 的指针

如何在内核中不使用 current 的情况下获得指向当前进程|任务的 task_struct 的指针。只需使用 cpu 寄存器。

0 投票
1 回答
158 浏览

ebpf - 我可以将 eBPF 程序附加到哪些 kprobe 挂钩?

我正在学习 eBPF,并且我知道我可以将我的 eBPF 程序附加到 kprobes、uprobes、tracepoints 等等。我看到 /sys/kernel/debug/tracing/events/ 下有一个跟踪点列表,我可以在其中附加 eBPF 程序。但是,我如何找到我可以破解的 kprobe 函数,比如与 TCP 相关的函数?另外,我如何找到这些函数签名?

谢谢。

0 投票
0 回答
37 浏览

linux - 在 mmap 和 brk 上使用带有 kprobes 的内核模块跟踪 malloc 函数调用

我试图查看在用户空间中使用内核模块和 mmap 和 brk 上的 kprobes 调用 malloc 函数多少次。我发现内核内部的系统调用为 sys_mmap 和 sys_brk,但是当我尝试将模块插入内核时它说:

insmod:无法插入 mallocmonitor.ko。不允许操作

此外,当我在 __kmalloc、kfree 或 map_region 函数上注册 kprobe 时,它​​可以正常工作。

有人对此有见解吗?

0 投票
0 回答
84 浏览

linux - kprobe 中的系统调用参数具有错误的值 libbpf

我正在尝试使用 libbpf 来跟踪对 kill 系统调用的调用。这是我的 eBPF 程序:

但是由于某种原因,当我尝试阅读pid参数时,该值是负数。但是在kill命令上使用 strace 时,pid 的值为正。

日志:

我不明白为什么pideBPF 程序中的参数值与 urserland 进程给出的值不同

0 投票
1 回答
23 浏览

system-calls - 附加 kprobe 时的 `do_sys_open` 与 `__x86_sys_open`

我试过运行opensnoop.py但使用

(我在其他脚本中看到过)而不是

但脚本随后停止打印文件名。是什么导致了差异?

使用时attach_kprobe(event=fn)fn系统调用还是事件?

您是否从此处/proc/kallsyms所述获得可能的系统调用列表?

0 投票
0 回答
9 浏览

linux - 为什么内核版本 5.4.156 上的 kallsyms 和 System.map 中缺少 security_path_* 符号?

我无法加载使用 kprobe 跟踪路径重命名的 eBPF 脚本:

它在我的 Ubuntu 机器(内核 5.13.0)上运行良好,但在 AWS 节点(内核 5.4.156)上失败,并出现以下错误:

我检查了一下/proc/kallsyms/boot/System.map-$(uname -r)确实这些符号security_path_{mknod,mkdir,unlink,rename}都存在于我的机器上,但在 AWS 节点上却不见了。

我还观察到,在将 AWS 内核版本更新到 5.4.176 后,符号出现并且我的程序可以运行。但是,这些符号都出现在所有(相关)内核版本的源代码中,没有标记staticnotrace通过EXPORT_SYMBOL.

这些符号不能在内核 5.4.156 上被 kprobed 吗?