ebpf专题

Android中使用eBPF跟踪 FD打开与关闭

我们知道在Android系统中 fd 泄露,可以通过 google 开发的 fdtrack来进行排查,但是有些情况下我们想在外发release版本去监控fd泄露情况,fdtrack就不能很好的满足需求了。可以用eBPF去监控fd泄露。 Android中使用eBPF跟踪 FD打开与关闭

观测云核心技术解密:eBPF Tracing 实现原理

前言 eBPF 是一种强大的内核技术,允许在内核中安全地执行自定义代码。通过 eBPF,开发者可以在不修改内核源码的情况下,对内核功能进行扩展和监控。eBPF Tracing 利用这一技术,对系统调用、内核函数等进行跟踪,从而实现对应用行为的深入洞察。 与传统的监控方式相比,eBPF Tracing 具有以下优势: 无侵入性:无需修改应用代码即可进行监控。高性能:在内核层面执行,减少了对应用

Android 中ebpf 的集成和调试

1. BPF 简介 BPF,是Berkeley Packet Filter的简称,最初构想提出于 1992 年。是一种网络分流器和数据包过滤器,允许早操作系统级别捕获和过滤计算机网络数据包。它为数据链路层提供了一个原始接口,允许发送和接收原始链路层数据包,并允许用户空间进程提供一个过滤程序来制定它想要接收哪些数据包。BPF 仅返回通过进程提供的过滤器的数据包。这样避免了将不需要的数据包从操作系统

网络编程之XDP技术的基础eBPF

一、XDP和TC的技术支撑 在前面分析了XDP和TC技术,从它们的细节里可以看出,它们都在调用eBPF的钩子函数。那么eBPF是什么呢?在2021年曾经写过一篇《eBPF介绍》的初级文章,对eBPF做了一个入门级的普及。但是未曾在技术层面上进行展开。这次借着XDP分析的机会,将其一并进行一下分析。先看一下XDP、TC及eBPF它们的关系图: 从图上可以看出,XDP和TC通过Maps调用内核中

openEuler 2203 中利用ebpf实现文件变更监控

在利用ebpf监控文件变更操作中,记录一些内核参数获取的过程。 1.环境信息   openeuler 2203 2.常用的修改文件的方式或者命令 1).直接使用文件系统的操作接口,比如write等; 2.)系统命令,比如vim/vi,sed,echo,cp,mv 涉及到的系统调用主要有: sys_enter_writesys_enter_renameat2sys_enter_rename

btrace:binder_transaction+eBPF+Golang实现通用的Android APP动态行为追踪工具

一、简介:     在进行Android恶意APP检测时,需要进行自动化的行为分析,一般至少包括行为采集和行为分析两个模块。其中,行为分析有基于规则、基于机器学习、基于深度学习甚至基于大模型的方案,各有各的优缺点,不是本文关注的重点,本文主要关注Android APP的动态行为采集。在做Android APP逆向分析时经常需要通过hook系统调用观察APP的行为,也需要一个动态行为追踪工具。

linux可观测性ebpf(一) ----------- 环境搭建

参考书籍 开发环境 Ubuntu 18.04.6 LTS (GNU/Linux 5.4.0-150-generic x86_64) 1.1 下载内核源码 cd /usr/src/sudo git clone -b v5.4 https://github.com/torvalds/linux.git 1.2 下载书中代码 git clone https://github.com/

深入理解Linux调试工具eBPF和strace、内存泄漏处理、Kubernetes容器调试以及C++协程的崩溃信息收集

在软件开发领域,无论是初级开发者还是资深工程师,都需要面对复杂的调试工作。本文将介绍几个重要的调试工具和技术,并提供实际调试方法的指导,包括Linux环境下的eBPF和strace,内存泄漏问题的处理,Kubernetes容器环境下的调试技巧,以及C++20协程中的崩溃信息收集策略 一、Linux环境下的eBPF和strace eBPF调试方法 eBPF简介:作为一项强大的虚拟机技

Linux动态追踪——eBPF

目录 摘要  1 什么是 eBPF 2 eBPF 支持的功能 3 BCC 4 编写脚本 5 总结 6 附 摘要          ftrace 和 perf 与 ebpf 同为 linux 内核提供的动态追踪工具,其中 ftrace 侧重于事件跟踪和内核行为的实时分析,perf 更侧重于性能分析和事件统计,与二者相比,ebpf 则更为强大,拥有更高的灵活性。 1 什

2024 DTC大会精彩演讲:DBdoctor,基于eBPF重新定义数据库可观测 (附PPT下载和演讲视频)

由中国DBA联盟(ACDU)和墨天轮社区联合主办的第十三届数据技术嘉年华(DTC)于北京盛大召开。4月13日上午海信聚好看云平台负责人张纪宽受邀在『数据库生态软件』分论坛发表主题演讲《DBdoctor:利用eBPF技术实现数据库智能诊断与优化》。 以下是演讲主要内容,文末附演讲PPT和视频获取方式。 一. 演讲思路 首先从数据库行业调研数据为切入分析数据库痛点,紧接着重点介绍独有的技术创新,

ebpf的CO-RE功能介绍

目录 CO-RE 引入 思路 介绍 使用  CO-RE 引入 因为ebpf需要深入内核,但内核中的数据结构很可能在不同版本中定义不同(尤其是结构体,可能会增加某个字段) 但我们在访问结构体时,比如一般通过指针+偏移量来拿到特定变量的首地址 如果定义变化,偏移量就会变化,就会需要多份ebpf代码这样就会增加维护成本,每推出一个新的内核版本,就要根据更新的内容来重新编写代码,太

bpf,ebpf,libbpf,libbpf_bootstarp概念介绍(如何安装libbpf_bootstarp库),以及四者关系,ebpf程序执行流程(代码分层,具体如何编译,后续操作,关系总结)

目录 概念介绍 bpf ​编辑 ebpf eBPF 虚拟机 libbpf  libbpf-bootstrap 如何安装 源码目录  ebpf, libbpf 和libbpf-bootstrap之间的关系 ebfp程序数据流程 介绍 代码 用户层函数 编译 查看 生成内核层的.o文件 第一模块 第二模块 第三模块 第四模块 第五模块 生成辅助文件(.sk

bpf,ebpf,libbpf,libbpf_bootstarp概念介绍,以及四者关系,ebpf程序执行流程(代码分层,具体如何编译,后续操作,总结)

目录 概念介绍 bpf ​编辑 ebpf eBPF 虚拟机 libbpf  libbpf-bootstrap ebpf, libbpf 和libbpf-bootstrap之间的关系 ebfp程序执行流程 代码 用户层函数 编译 查看 生成内核层的.o文件 第一模块 第二模块 第三模块 第四模块 第五模块 生成辅助文件(.skel.h) 生成代码层的.o文件

CVE-2021-31440:eBPF verifier __reg_combine_64_into_32 边界更新错误

文章目录 前言漏洞分析构造 vuln reg 漏洞利用漏洞修复参考 前言 影响版本:Linux 5.7 ~ 5.11.20 8.8 编译选项:CONFIG_BPF_SYSCALL,config 所有带 BPF 字样的编译选项。General setup —> Choose SLAB allocator (SLUB (Unqueued Allocator)) —> SLAB。CON

CVE-2021-3490:ebpf verifier 寄存器32位范围更新错误导致越界读写【ALU Sanitation 绕过】

文章目录 前言漏洞分析构造 vuln reg 漏洞利用ALU SanitationLinux v5.11.8 – 5.11.16 版本Linux v5.11.8 之前的版本Linux v5.11.16 之后的版本 exp 及效果演示漏洞修复参考 前言 影响版本:Linux 5.7-rc1 ~ Linux 5.13-rc4 编译选项:CONFIG_BPF_SYSCALL,conf

深入浅出运维可观测工具(四):如何使用eBPF绘制网络拓扑图

哈喽~又到了我们技术分享环节了。eBPF这个系列自分享以来收到了很多朋友的喜欢,真是让博主又惊又喜,感谢大家的支持。话不多说,今天我们将对如何使用eBPF绘制网络拓扑图做一篇分享,文章较长,干货较多,大家可以一键三连先码后看~ 新来的朋友点这里,一键回看前期精彩技术干货。 深入浅出运维可观测工具(三):eBPF如何兼容多架构模式性能管理https://mp.csdn.net/mp_bl

eBPF实践篇之环境搭建

文章目录 前言实验环境前置知识配置开发环境最后 前言 你好,我是醉墨居士,本次我们学习一下eBPF,我们基于libbpf-bootstrap来进行我们的eBPF程序开发🤗 实验环境 一台Debian12操作系统的计算机,我使用的是Debian12.2.0-amd64 其它Linux发行版的环境也可以,Linux内核不低于5.4版本 前置知识 c语言,linux系统基本

eBPF实践篇之基础概念

文章目录 前言基本概念eBPF的生命周期之旅最后 前言 eBPF 是一门革命性的技术,可以在不修改内核源代码或者加载内核模块的情况下,安全和高效地拓展和增强Linux内核的功能,我们主要聚焦在eBPF在网络传输上的应用和实践🚀 基本概念 下面这张eBPF官网 https://ebpf.io/ 的一张图片 我们通过eBPF可以安全地进行网络的观测和追踪 有很多优秀的eBPF项

深入理解基于 eBPF 的 C/C++ 内存泄漏分析

对于 C/C++ 程序员来说,内存泄露问题是一个老生常谈的问题。排查内存泄露的方法有很多,比如使用 valgrind、gdb、asan、tsan 等工具,但是这些工具都有各自的局限性,比如 valgrind 会使程序运行速度变慢,gdb 需要了解代码并且手动打断点,asan 和 tsan 需要重新编译程序。对于比较复杂,并且在运行中的服务来说,这些方法都不是很方便。 好在有了 eBPF,

XDP入门--之eBPF sample内核示例代码的编译

Linux内核代码提供了很多eBPF的示例代码(以linux6.1版本内核代码为例),我们可以在/Linux/samples/bpf目录下找到示例代码。 1、查看Linux内核版本 本文不讨论交叉编译的情况,因为eBPF还在快速发展中,不同版本的Linux内核的支持情况不太一至。所以第一步,我们需要通过uname命令查看本机的Linux内核版本号,以便下面几个步骤的开展。 pi@raspbe

VED-eBPF:一款基于eBPF的内核利用和Rootkit检测工具

关于VED-eBPF VED-eBPF是一款功能强大的内核漏洞利用和Rootkit检测工具,该工具基于eBPF技术实现其功能,可以实现Linux操作系统运行时内核安全监控和漏洞利用检测。 eBPF是一个内核内虚拟机,它允许我们直接在内核中执行代码,而无需修改内核源代码。eBPF程序可以绑定到跟踪点、kprobes和其他内核事件上,以帮助广大研究人员更有效地分析代码执行并收集数据。

再见 Sidecars,eBPF 能否扛起新大旗?

Sidecar 的概念在容器和微服务的世界中变得如此普遍,以至于很容易将 Sidecar 视为云原生技术栈中自然、健康的一部分。 但如果你退后一步想一想,Sidecar 其实并不一定那么优雅,当微服务规模变得开始臃肿,Sidecar 模式也需要出现革新。 就如同现在的摩托车很少再有边车一样。毕竟,之所以被称为边车,是指如果你需要携带不适合它本身能承载的东西,你可以将其放在摩托车的边车上。 然

应用监控 eBPF 版:实现高效协议解析的技术探索

作者:彦鸿 引言 随着 Kuberentes 等云原生技术的飞速发展,带来了研发与运维模式的变革。企业软件架构由单体服务向分布式、微服务演进。随着业务发展,多语言、多框架、多协议的微服务在企业中越来越多,软件架构复杂度越来越高,如何快速通过可观测工具快速定位出问题对研发人员至关重要。为满足全场景、端到端的应用监控需求,应用实时监控服务 ARMS 推出应用监控 eBPF 版,通过 eBPF 技术

ebpf学习_incomplete

学习ebpf相关知识 参考资料: awesome-ebpf 文章目录 初识准备ebpf.io介绍cilium的介绍内核文档Brendan Gregg's Blog 的介绍书籍Learning eBPFWhat is eBPF? 交互式环境视频 基础知识学习学习环境搭建书籍阅读 项目落地流程整理环境搭建内核编译bcc环境变量zliblibelflibbpflibbpf-bootstrapbp

3.10 Android eBPF HelloWorld调试(四)

一,读取eBPF map的android应用程序示例 1.1 C++源码及源码解读 /system/memory/bpfmapparsed/hello_world_map_parser.cpp //基于aosp android12#define LOG_TAG "BPF_MAP_PARSER"#include <log/log.h>#include <stdlib.h>#include