eBPF Kprobe,有些事做不到

记录一段失败的可行性验证方案,历时两天多,探索出eBPF kprobe技术的边界。

要谈eBPF kprobe,那就得从Kprobes聊起。

Kprobes

Kprobes内核调试技术,是Linux提供的一种能力。能在内核指令执行过程中动态断点,在不影响内核态指令正常运行的过程中,收集系统的性能数据。

Kprobes 内核调试技术

原理简单!内核函数方便利用指令向用户态暴露自己的内存地址。
(所有暴露的内核函数地址都在虚拟文件/proc/kallsyms上可找到!这是Kprobes利用的前提条件!)

Kprobes通过访问内核函数的内存地址,即可向可“埋点”的内核函数的某个位置增加断点(一组回调函数)。当实际执行到“埋点”的内核函数的断点时,跳转指令会跳转到Kprobes句柄注册的“埋点”函数(内存地址)上,而后执行结束,再利用句柄跳转回原来的上下文。

Kprobes综述和怎么工作的

eBPF kprobe

ebpf kprobe动态追踪是利用了Kprobes内核调试技术。

那么,就有了这样的想法。用ebpf kprobe去追踪tcp的关联函数,甚至像Kprobe一样,去修改tcp相关函数的执行逻辑。

当然,有想法就得从可追踪的内核函数入手。bpftrace前端工具可以迅速定位这个需要。
在这里插入图片描述
这个是ebpf kprobe可跟踪的部分tcp函数
在这里插入图片描述
也囊括了可能用到的inet函数。

于是乎,一番操作!tracing和profiling在过程中没有太多的问题。于是乎,打算开始尝试用ebpf kprobe技术去修改tcp首部选项的内容,看看能不能玩出点花来。

先不说结果,毕竟技术实现也在乎个其中的乐趣。

捋了捋思路,我想在握手的最后阶段发送修改的首部,就得在client ACK阶段前设置可写的开关

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值