问题标签 [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.
linux - 需要调试 MMAP 那么 MMAP 的目标文件或包含 MMAP() 的模块在哪里——如何在 linux 中找到?
我正在尝试使用 kprobe 调试 MMAP,但我不知道如何在 MMAP 中设置断点。在我的 lib/modules 中,我搜索但找不到类似于包含模块的 mmap。如何使用 kprobe 调试 mmap,所以我需要例程的目标文件。
我只需要在不同的位置设置断点。所以我可以使用radare2来查看程序集并检查我将在KProbe模块中指定的内存位置,这些内存位置将被注入到包含MMAP函数的例程中的MMAP函数中,以进行调试。
c - Kprobe 和 Uprobe 如何在可执行文件中插入调试恶作剧——它们是否扩展了正在运行的模块或程序的地址空间
我只是无法理解调试器和探测工具的想法。
从技术上讲,如何在运行的内核模块或用户空间应用程序中插入调试 printk 语句——使用 Kprobe 和 Uprobe。使用什么术语来定义 Kprobe 和 Uprobe 在内存方面的行为 - 如何在程序运行状态下拉伸地址空间。
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,
c - 在不使用 current 的情况下获取指向当前进程的 task_struct 的指针
如何在内核中不使用 current 的情况下获得指向当前进程|任务的 task_struct 的指针。只需使用 cpu 寄存器。
ebpf - 我可以将 eBPF 程序附加到哪些 kprobe 挂钩?
我正在学习 eBPF,并且我知道我可以将我的 eBPF 程序附加到 kprobes、uprobes、tracepoints 等等。我看到 /sys/kernel/debug/tracing/events/ 下有一个跟踪点列表,我可以在其中附加 eBPF 程序。但是,我如何找到我可以破解的 kprobe 函数,比如与 TCP 相关的函数?另外,我如何找到这些函数签名?
谢谢。
linux - 在 mmap 和 brk 上使用带有 kprobes 的内核模块跟踪 malloc 函数调用
我试图查看在用户空间中使用内核模块和 mmap 和 brk 上的 kprobes 调用 malloc 函数多少次。我发现内核内部的系统调用为 sys_mmap 和 sys_brk,但是当我尝试将模块插入内核时它说:
insmod:无法插入 mallocmonitor.ko。不允许操作
此外,当我在 __kmalloc、kfree 或 map_region 函数上注册 kprobe 时,它可以正常工作。
有人对此有见解吗?
linux - kprobe 中的系统调用参数具有错误的值 libbpf
我正在尝试使用 libbpf 来跟踪对 kill 系统调用的调用。这是我的 eBPF 程序:
但是由于某种原因,当我尝试阅读pid
参数时,该值是负数。但是在kill
命令上使用 strace 时,pid 的值为正。
日志:
我不明白为什么pid
eBPF 程序中的参数值与 urserland 进程给出的值不同
system-calls - 附加 kprobe 时的 `do_sys_open` 与 `__x86_sys_open`
我试过运行opensnoop.py但使用
(我在其他脚本中看到过)而不是
但脚本随后停止打印文件名。是什么导致了差异?
使用时attach_kprobe(event=fn)
是fn
系统调用还是事件?
您是否从此处/proc/kallsyms
所述获得可能的系统调用列表?
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 后,符号出现并且我的程序可以运行。但是,这些符号都出现在所有(相关)内核版本的源代码中,没有标记static
或notrace
通过EXPORT_SYMBOL
.
这些符号不能在内核 5.4.156 上被 kprobed 吗?