• EBPF开发指南从原理到应用
21年品牌 40万+商家 超1.5亿件商品

EBPF开发指南从原理到应用

全新正版 极速发货

68.61 6.2折 109.8 全新

库存10件

广东广州
认证卖家担保交易快速发货售后保障

作者丰生强 李泊冰 著

出版社人民邮电出版社

ISBN9787115643605

出版时间2024-12

装帧平装

开本16开

定价109.8元

货号1203482983

上书时间2024-12-30

谢岳书店

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
作者简介
丰生强 独立软件安全研究员, 资深软件安全专家,ISC2016 安全训练营独立讲师,拥有丰富的软件安全实战经验。自2008年起,在安全杂志《黑客防线》上发表技术文章, 活跃于国内各大软件安全论坛,具有深厚的行业影响力。著有《Android 软件安全与逆向分析》《macOS 软件安全与逆向分析》等热销图书,深受读者喜爱。
李泊冰 安全专家,资深程序员,专注于移动安全研究。拥有近 10 年的行业经验,擅长软件安全攻防对抗,多次从零开始构建企业移动安全体系,具备丰富的实战经验。曾在国内多家互联网公司任职,涉及电商、短视频、游戏、杀毒软件等多个领域。业余时间致力于软件与系统底层技术的研究。

目录
第 1 章 eBPF 概述                     1
1.1 eBPF 是什么                   1 
1.2 eBPF 发展历史                 2 
1.3 eBPF 应用领域                 4 
1.4 eBPF 如何运行                 5 
1.5 eBPF 相关工具与库             6 
1.5.1 BCC                    6 
1.5.2 bpftrace                 7 
1.5.3 libbpf                   8 
1.6 初识 eBPF 程序                8 
1.7 本章小结                      9 
第 2 章 eBPF 开发环境准备            10
2.1 Linux 发行版本的选择          10 
2.2 编程语言的选择               12 
2.3 安装和配置 Linux 操作系统
环境                         13 
2.3.1 Windows 上安装和配置
Linux                  14 
2.3.2 macOS 上安装和配置
Linux                  16 
2.3.3 其他环境安装           17 
2.4 以二进制方式安装 eBPF 开发
工具与库                     20 
2.4.1 安装 BCC               20 
2.4.2 安装 bpftrace            21 
2.4.3 安装 libbpf              21 
2.5 以源码方式安装 eBPF 开发
工具与库                     22 
2.5.1 编译安装 BCC           22 
2.5.2 编译安装 bpftrace        23 
2.5.3 编译安装 libbpf          24 
2.6 本章小结                     24 
第 3 章 Linux 动态追踪技术            25
3.1 Linux 动态追踪系统            25 
3.2 前端工具和库                 26 
3.2.1 strace 与 ltrace           26 
3.2.2 DTrace                 29 
3.2.3 SystemTap              30 
3.2.4 LTTng                  30 
3.2.5 trace-cmd               31 
3.2.6 perf                    31 
3.3 数据采集机制                 35 
3.3.1 ptrace 系统调用          36 
3.3.2 perf_event_open 系统
调用                   36 
3.3.3 BPF 系统调用           37 
3.3.4 其他子系统与内核
模块                   37 
3.4 跟踪文件系统                 37 
3.4.1 挂载位置               38 
3.4.2 目录详情               38 
3.4.3 跟踪器                 43 
3.4.4 跟踪选项               44 
3.4.5 环形缓冲区             47 
3.5 Linux 内核数据源              48 
3.5.1 ftrace                   49 
3.5.2 kprobe/kretprobe         70 
目录
- 2 - 
3.5.3 uprobe/uretprobe         74 
3.5.4 tracepoint               77 
3.6 eBPF 数据采集点             83 
3.7 本章小结                     84 
第 4 章 eBPF 程序入门                85
4.1 第 一个 eBPF 程序              85 
4.1.1 第 一个 BCC 程序        85 
4.1.2 第 一个 C 语言版本的
eBPF 程序              86 
4.2 eBPF 程序功能解读            91 
4.2.1 加载 eBPF 字节码        92 
4.2.2 BPF 系统调用           93 
4.2.3 attach_kprobe            96 
4.2.4 perf_event_open 系统
调用                   96 
4.3 eBPF 授权协议               102 
4.4 eBPF 指令集                 103 
4.4.1 eBPF 寄存器           103 
4.4.2 eBPF 指令编码         104 
4.4.3 指令列表              105 
4.4.4 eBPF 指令分析         109 
4.4.5 BCC 中 eBPF 程序指令的
生成                  110 
4.4.6 eBPF 指令反汇编       112 
4.4.7 eBPF 验证机制         117 
4.5 libbpf                       126 
4.5.1 libbpf 功能             126 
4.5.2 libbpf 接口             127 
4.6 libbpf 案例程序               128 
4.7 重写 eBPF 程序              131 
4.7.1 如何编译              132 
4.7.2 编译内核态程序        135 
4.7.3 编译生成 skel 头文件    136 
4.7.4 编译用户态程序        141 
4.8 本章小结                    143 
第 5 章 BCC                        144
5.1 BCC 工具集                  145 
5.1.1 tools 工具集            146 
5.1.2 libbpf-tools 工具集      146 
5.2 BCC 常用的工具              147 
5.2.1 opensnoop              147 
5.2.2 exitsnoop              149 
5.2.3 execsnoop              150 
5.3 使用 Python 开发 eBPF 程序    152 
5.3.1 BPF API               152 
5.3.2 opensnoop 程序解读     157 
5.4 使用 libbcc 开发 eBPF 程序     165 
5.4.1 libbcc 的编译与安装     166 
5.4.2 重写 eBPF 程序         167 
5.4.3 编译与测试            175 
5.5 本章小结                    181 
第 6 章 bpftrace                     182
6.1 bpftrace 的功能和特性         182 
6.1.1 工程结构              182 
6.1.2 探针类型              184 
6.1.3 特性                  185 
6.1.4 主程序                185 
6.2 bpftrace 的脚本语法           191 
6.3 探针类型                    198 
6.3.1 kprobe 和 kretprobe      198 
6.3.2 uprobe 和 uretprobe      200 
6.3.3 跟踪点                202 
6.3.4 USDT                 204 
6.3.5 定时器事件            208 
6.3.6 软件与硬件事件        209 
6.3.7 内存监视点            211 
6.3.8 kfunc 和 kretfunc        214 
6.3.9 迭代器                215 
6.3.10 开始块与结束块       217 
目录
- 3 - 
6.4 bpftrace 变量                 217 
6.4.1 内置变量              217 
6.4.2 基础变量              218 
6.4.3 关联数组              221 
6.5 bpftrace 函数                 221 
6.5.1 基础函数              221 
6.5.2 映射表相关函数        225 
6.6 bpftrace 的工作原理           226 
6.7 bpftrace 工具集               231 
6.8 本章小结                    236 
第 7 章 使用 Golang 开发 eBPF 程序    238
7.1 Go 语言开发环境介绍         238 
7.2 使用 libbpfgo 开发 eBPF 
程序                        239 
7.2.1 搭建 libbpfgo 开发
环境                  239 
7.2.2 开发 eBPF 程序         241 
7.3 Cilium 与 ebpf-go             244 
7.3.1 搭建 ebpf-go 开发
环境                  244 
7.3.2 使用 ebpf-go 开发 eBPF 
程序                  245 
7.3.3 bpf2go 和 bpftool        249 
7.4 本章小结                    255 
第 8 章 BTF 与 CO-RE              256
8.1 什么是 CO-RE               257 
8.2 BTF 详解                    258 
8.2.1 BTF 数据结构          258 
8.2.2 BTF 内核 API          261 
8.2.3 生成 BTF 信息         262 
8.2.4 二进制中的 BTF        264 
8.2.5 BTF 相关辅助函数      265 
8.3 对 BTF 的处理               266 
8.3.1 编译器对 BTF 的处理   266 
8.3.2 libbpf 对 BTF 的处理    268 
8.4 读取内核结构体字段          269 
8.4.1 案例一:直接访问
结构体                269 
8.4.2 案例二:使用 bpf_get_ 
current_task_btf         270 
8.4.3 案例三:使用 BPF_ 
CORE_READ          271 
8.4.4 BTF 相关的其他宏      273 
8.5 低版本系统如何支持 BTF      274 
8.5.1 什么是 BTFHub         275 
8.5.2 生成最小化的 BTF 
信息                  279 
8.5.3 编译运行 BTF-App      280 
8.6 本章小结                    285 
第 9 章 eBPF 程序的数据交换         286
9.1 eBPF 程序的数据结构         286 
9.1.1 什么是 eBPF map       286 
9.1.2 map 支持的数据类型    291 
9.2 map 操作接口                294 
9.2.1 eBPF map 相关的 API    294 
9.2.2 创建 map              299 
9.2.3 添加数据              300 
9.2.4 查询                  301 
9.2.5 遍历数据              301 
9.2.6 删除数据              302 
9.2.7 使用 bpftool 操作 map    302 
9.3 map 在内核中的实现          306 
9.3.1 创建 map 对象          307 
9.3.2 map 对象的生命周期    314 
9.3.3 eBPF 对象持久化       315 
9.4 ftrace 的 eBPF 数据交换接口    317 
9.4.1 bpf_trace_printk         317 
9.4.2 封装的 bpf_printk 宏     320 
9.4.3 trace 日志的输出格式    321 
目录
- 4 - 
9.5 perf 事件                    322 
9.5.1 perf 事件的 map 类型    323 
9.5.2 内核态程序写入 perf 
事件                  324 
9.5.3 用户态程序读取 perf 
事件                  327 
9.5.4 BCC 中 perf 事件处理   330 
9.6 环形缓冲区                  333 
9.6.1 eBPF ringbuf 的 map 
类型                  334 
9.6.2 内核态程序如何使用
ringbuf                335 
9.6.3 用户态程序如何使用
ringbuf                344 
9.6.4 完整的数据交换实例    346 
9.7 本章小结                    351 
第 10 章 eBPF 程序类型与挂载点      353
10.1 常见的 eBPF 程序类型        353 
10.1.1 跟踪和分析类        355 
10.1.2 网络类              356 
10.2 eBPF 程序挂载点            357 
10.3 函数跟踪技术               358 
10.3.1 内核态程序跟踪      358 
10.3.2 用户态程序跟踪      360 
10.4 kprobe                     361 
10.4.1 内核中使用 kprobe 
探针                361 
10.4.2 kretprobe            365 
10.4.3 eBPF 中创建 kprobe 
跟踪                368 
10.5 uprobe                     372 
10.5.1 创建单行程序测试
uprobe              372 
10.5.2 eBPF 中创建 uprobe 
跟踪                373 
10.5.3 bashreadline 程序      377 
10.6 USDT                      379 
10.6.1 在 BCC 中使用
USDT               379 
10.6.2 在 libbpf 中使用
USDT               384 
10.7 本章小结                   387 
第 11 章 eBPF 内核辅助方法          388
11.1 如何查阅内核辅助方法       388 
11.2 辅助方法的实现原理         389 
11.3 eBPF 内核辅助方法分类      392 
11.3.1 网络相关的辅助
方法                392 
11.3.2 数据处理类辅助
方法                396 
11.3.3 跟踪相关的辅助
方法                398 
11.3.4 系统功能性辅助
方法                399 
11.4 常用的 eBPF 内核辅助方法    401 
11.5 本章小结                   404 
第 12 章 Linux 性能分析              405
12.1 CPU                       406 
12.1.1 CPU 基础知识        406 
12.1.2 传统 CPU 分析工具    409 
12.1.3 eBPF 相关分析工具    412 
12.1.4 CPU 分析策略        413 
12.2 内存                       414 
12.2.1 内存基础知识        414 
12.2.2 传统内存分析工具    419 
12.2.3 eBPF 内存分析工具    419 
12.2.4 内存分析方法        420 
12.3 磁盘 I/O                    420 
12.3.1 磁盘 I/O 基础知识    420 
目录
- 5 - 
12.3.2 传统分析工具       423 
12.3.3 BCC 中的分析工具   423 
12.3.4 磁盘性能分析方法    423 
12.4 网络                       424 
12.4.1 网络基础知识        424 
12.4.2 传统网络分析工具    426 
12.4.3 eBPF 网络分析
工具                426 
12.5 常用分析方法和案例         427 
12.6 本章小结                   428 
第 13 章 eBPF 实战应用              429
13.1 在网络安全中的应用         429 
13.2 在软件动态分析中的应用     432 
13.3 在安全环境增强中的应用     439 
13.4 在网络数据处理中的应用     443 
13.5 在系统与云原生安全中的
应用                       446 
13.6 本章小结                   448

内容摘要
本书详细介绍了 eBPF 核心技术及其应用。全书可分为 eBPF 基础知识、进阶应用和实际案例三大部分,覆盖了 eBPF 的编程接口、架构及其在性能分析、安全监控和网络协议等方面的应用。读者将通过 C、Go 和Python 等语言学习 eBPF 编程,并掌握其在系统监控、数据分析和性能提升方面的实际技巧。
本书适合不同层次的读者,包括对操作系统或应用程序监控感兴趣的学生和初学者、希望利用 eBPF 进行内核代码调试和优化的 Linux 内核开发人员、使用 eBPF 监控系统事件和分析恶意软件的安全工程师和逆向工程师、通过 eBPF 收集性能数据以优化软件和系统性能的性能分析师和应用程序开发者,以及希望优化虚拟化软件性能和管理的虚拟化开发人员。

主编推荐
面对 Linux 系统监控与性能分析的复杂挑战,你是否感到困惑与无助?遭遇线上服难题时,你是否渴望一把解锁内核与应用运行奥秘的钥匙?不用担心,eBPF 技术便是你的新选择。本书将是你在这场探索之旅中的指南针,引领你穿越内核的复杂迷宫,发掘 eBPF 的强大功能。从基础到高级,从监控网络流量到优化应用性能,本书不仅传授理论,更提供实践指南。让我们携手,借助eBPF 的力量,开启系统架构的新时代。

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP