-1, 0); if (kernel_addr) { if (bpf_probe_read((void *)kernel_addr, size, (voi...
bpf_probe_read_kernel(dst, sz, (const void *) \ __builtin_preserve_access_index(src)) \ #define__CORE_RELO(src, field, info) \ __builtin_preserve_field_info((src)->field, BPF_FIELD_##info) #if__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ #define__CORE_BITFIELD_PROBE_READ(dst...
Hi folks, I'm running BCC on Android 11, Kernel 4.14, ARM64 and bpf_probe_read_user returns an error (-14). As a result opensnoop returns an empty filename string. I'm aware of #2253 and implemented the solution that supposedly should fi...
for(inti =6; i >=0; i--) { bpf_probe_read_kernel(&fp,sizeof(fp), (void*) (r10 + i *16)); if(r10 < fp && fp < r10 + range_of_detection) returnfp; } returnr10; } 不是很准确,但能用。 如果要拿到 traceeIP呢? 如上图,在拿到trampoline的FP之后,就可以直接读取FP+8字节的位...
1.1.1、bpf内存空间分配1.1.2、bpf verifier1.1.3、bpf JIT/kernel interpreter1.1.4、fd分配1.2、bpf map操作1.2.1、map的创建1.2.2、map的查找1.2.3、BPF_FUNC_map_lookup_elem1.3、obj pin1.3.1、bpf_obj_pin()1.3.2、bpf_obj_get() 2、Tracing类型的BPF程序 2.1、bpf程序的绑定2.2、bpf程序的执行 ...
As was discussed at LSFMM, bpf_probe_read() may be split in the future into bpf_probe_read_kernel() and bpf_probe_read_user(), to support other architectures (like SPARC) where the kernel/user address space overlaps, and the pointer isn'...
bpf_probe_read_kernel_str(str, sizeof(str), p); 如果我们需要读取字符串类型,对应的例子是: struct my_kernel_type *t = ...; char str[32]; /* read string as CO-RE-relocatable */ bpf_core_read_str(str, sizeof(str), &t->type); ...
1.编写eBPF程序:在C语言中编写eBPF程序,其中包含对bpf_func_get_current_task函数的调用。例如 ,可以使用bpf_probe_read_kernel函数读取当前任务的指针,然后使用bpf_get_current_pid_tgid函数获取当前任务的PID。如何调用到bpfbpf_func_get_current_task的逻辑 2.加载eBPF程序:使用bpf()系统调用加载eBPF程序到...
可以看到大部分的程序篇幅都在调用bpf_probe_read_kernel,CO-RE 提供了一个宏,对这个过程进一步地封装,那么这个程序就可以简化为: SEC("kprobe/vfs_open")intBPF_KPROBE(vfs_open,conststructpath*path,structfile*file){pid_t pid;pid=bpf_get_current_pid_tgid()>>32;constunsignedchar*filename;// 一行语...
probe_read_user_str: yes probe_read_kernel: yes probe_read_kernel_str: yes get_current_cgroup_id: yes send_signal: yes override_return: yes Kernel features Instruction limit: -1 Loop support: no btf: no Map types hash: yes percpu hash: yes ...