码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 开发一个ebpf程序


    第一步:使用 C 开发一个 eBPF 程序新建一个  hello.c  文件,并输入下面的内容:

    //ebpf程序
    int hello_world(void *ctx)
    {
        bpf_trace_printk("Hello, World!");
        return 0;
    }


    第二步:使用 Python 和 BCC 库开发一个用户态程序

    #!/usr/bin/env python3
    # 1) import bcc library
    from bcc import BPF

    # 2) load BPF program
    b = BPF(src_file="hello.c")
    # 3) attach kprobe
    b.attach_kprobe(event="do_sys_openat2", fn_name="hello_world")
    # 4) read and print /sys/kernel/debug/tracing/trace_pipe
    b.trace_print()


    让我们来看看每一处的具体含义:第 1) 处导入了 BCC  库的 BPF 模块,以便接下来调用;

    第 2) 处调用 BPF() 加载第一步开发的 BPF 源代码;

    第 3) 处将 BPF 程序挂载到内核探针(简称 kprobe),其中  do_sys_openat2() 是系统调用  openat()  在内核中的实现;

    第 4) 处则是读取内核调试文件  /sys/kernel/debug/tracing/trace_pipe  的内容,并打印到标准输出中

    第三步:执行 eBPF 程序

    第三步:执行 eBPF 程序


    开发一个 eBPF 程序需要经过开发 C 语言 eBPF 程序、编译为 BPF 字节码、加载 BPF 字节码到内核、

    内核验证并运行 BPF 字节码,以及用户程序读取 BPF 映射五个步骤。

    使用 BCC 的好处是,它把这几个步骤通过内置框架抽象了起来,并提供了简单易用的 Python 接口,

    这可以帮你大大简化 eBPF 程序的开发。

    BCC 负责了 eBPF 程序的编译和加载过程。因而,要了解 BPF 指令的加载过程,就可以从 BCC 执行 eBPF 程序的过程入手。
     

  • 相关阅读:
    前端JS算法--插入排序
    某音网页端 X-Bogus 参数
    问题越古老,解决方案存在的时间就越长
    在Linux系统中部署Tomcat并通过公网访问
    优化销售策略,突破企业全面预算管理难题
    股票量化怎么用?怎样才能做好量化交易?
    【异常】理解Java中的异常处理机制
    票据传递攻击
    鸿蒙应用开发之数据管理
    【HTTPS】运营商劫持、中间人攻击 与 加密
  • 原文地址:https://blog.csdn.net/zhaoyangjian724/article/details/133977495
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号