自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 Vscode 解决Golang无法跳转到定义

首先,需要安装好 go 插件,插件市场搜索go,选一个即可安装。然后,需要安装 go 的工具包。在 vscode 中,输入快捷键:command(ctrl) + shift + p,在弹出的窗口中,输入:go:install/Update Tools,回车后,选择所有插件(勾一下全选),点击确认,进行安装(设置GOPROXY)。接下来,在项目的 settings.json 文件中添加配置: "go.goroot": "D:\\Go", "go.gopath": "D:\\gopath",

2022-05-17 16:20:52 6950

原创 Perf / Ring Buffer对比

Perf Buffer常规用法:struct addrinfo //需要上传给应用层的数据结构{ int ai_flags; /* Input flags. */ int ai_family; /* Protocol family for socket. */ int ai_socktype; /* Socket type. */ int ai_protocol; /* Protocol for socket. */ u32

2022-05-17 16:20:27 664

原创 Cilium/eBPF令人无语的加载机制记录

前段时间编译bpf c文件,都是用的bpf2go这个go包,这个包虽然很方便,但是指定参数比较困难,学习到tracee falco这种大型项目都是通过makefile直接编译bpf代码,因此打算自己写Makefileclang -D__KERNEL__ -D__ASM_SYSREG_H \ -D__BPF_TRACING__ \ -Wunused \ -Wall \ -Wno-frame-address \ -Wno-unused-value \ -Wno-unknown-war

2022-05-17 16:19:08 425

原创 eBPF编写避坑指南

0x1:基本概念当使用tracepoint的时候,函数参数如何确认?cat /sys/kernel/debug/tracing/events/syscalls/xxx/format. xxx为要跟踪的函数,在这里有函数参数定义。0x2:注意事项写结构体的时候一定要注意内存对齐,防止被编译器优化填充。使用 LLVM 内置的函数做内存操作#ifndef memset# define memset(dest, chr, n) __builtin_memset((dest

2022-05-17 16:18:45 766

原创 eBPF代码流程分析

0x1:应用层流程基于Linux kernel source v5.131.加载bpf.o文件并处理elf section信息1.int bpf_object__open(char *path) //参数是bpf.o文件路径 -- __bpf_object__open(const char *path, const void *obj_buf, size_t obj_buf_sz, const struct bpf_object_open_opts *opts)//读取obj文件,解析elf中s

2022-05-17 16:17:48 398

原创 eBPF-AntiRootkit

背景:针对最近几年频繁出现的通过eBPF进行容器逃逸、rootkit等攻击,需要考虑如何收敛服务器ebpf相关权限,防止被黑客利用。静态方案:宿主机层面:非root用户不赋予CAP_BPF及CAP_SYS_ADMIN注:3.15 - 5.7 内核不赋予CAP_SYS_ADMIN即可 5.8及以后内核需要同时不存在CAP_BPF及CAP_SYS_ADMIN权限非root用户禁止调用ebpf功能 /proc/sys/kernel/unprivileged_bpf_disabled 设置为1

2022-05-17 16:15:44 511

原创 Centos 4.18 eBPF编译环境搭建

背景:本文主要解决centos7 4.18内核系统eBPF编译环境搭建流程:1.内核升级关于如何在centos7安装4.18内核,这个网上有大把教程,不再赘述2.编译套件升级centos7 默认clang llvm版本较低,不识别-target=bpf命令,因此需要对clang进行升级GCC升级编译llvm,需要gcc至少为 5.1版本,centos默认安装的是 gcc 4.8.5。yum install centos-release-scl yum install devtoolset

2022-05-17 16:14:55 1570

原创 eBPF开发指南

0x1:技术背景bpf:BPF 的全称是 Berkeley Packet Filter,是一个用于过滤(filter)网络报文(packet)的架构。(例如tcpdump),目前称为Cbpf(Classical bpf)Ebpf:eBPF全称 extended BPF,Linux Kernel 3.15 中引入的全新设计, 是对既有BPF架构进行了全面扩展,一方面,支持了更多领域的应用,比如:内核追踪(Kernel Tracing)、应用性能调优/监控、流控(Traffic Control)等;另一

2022-05-17 16:14:27 1516

原创 eBPF简介

基础概念eBPF是kernel 3.15中引入的全新设计,将原先的BPF发展成一个指令集更复杂、应用范围更广的“内核虚拟机”。eBPF支持在用户态将C语言编写的一小段“内核代码”注入到内核中运行,注入时要先用llvm编译得到使用BPF指令集的elf文件,然后从elf文件中解析出可以注入内核的部分,最后用bpf_load_program方法完成注入。 用户态程序和注入到内核中的程序通过共用一个位于内核中map实现通信。为了防止注入的代码导致内核崩溃,eBPF会对注入的代码进行严格检查,拒绝不合格的代码的注

2022-05-17 16:11:44 1934

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除