• 莫名
    2021-02-05
    关于思考题,想到一个比较笨拙的方法:gdb + qemu 调试内核。先进入虚拟机在某个内核函数上注册一个 kprobe,然后 gdb 远程调试内核,查看该内核函数的汇编指令(disass)是否被替换。 应该有更简单的方法,这方面了解不深。

    作者回复: 用gdb 远程调试内核看也可以。 还可以通过 /proc/kallsyms 找到函数的地址,然后写个kernel module把从这个地址开始后面的几个字节dump出来,比较一下probe函数注册前后的值。

    共 3 条评论
    12
  • A免帅叫哥
    2021-08-28
    看到内核还有一个kretprobe_example

    作者回复: 是的, kretprobe的实现机制和kprobe 类似, 可以拿到函数的return value.

    
    
  • piboye
    2023-03-14 来自广东
    kprobe 用int3的方式性能会差吧,为神马不替换callq的指令呢?
    
    
  • janey
    2022-11-18 来自江苏
    一下子讲清楚了tracepoint核kprobe函数的区别,谢谢老师!另外eBPF还涉及了uprobe和USDT这两种类型又是啥意思呢?
    
    
  • Geek_e4cf2e
    2021-09-19
    crash来查看很方便
    
    