发布

  • Add `ABI0` support to Go `crypto/tls` eBPF tracer (#1169)

    frostbyte_neo 发布于 2022-07-05 11:35:30 +00:00

    • Determine the Go ABI and get goid offset from DWARF

    • Add ABI enum and morph the function according to the detected ABI

    • Pass goid offset to an eBPF map to retrieve it in eBPF context

    • Add vmlinux.h and implement get_goid_from_thread_local_storage

    • Fix BPF verifier errors

    • Update the comments

    • Add go_abi_0.h and implement ABI0 specific reads for arm64

    • Upgrade github.com/cilium/ebpf to v0.9.0

    • Add a comment

    • Add macros for x86 specific parts

    • Update x86.o

    • Fix the map key type

    • Add user_pt_regs

    • Update arm64 object file

    • Fix the version detection logic

    • Add getGStructOffset method

    • Define goid_offsets, goid_offsets_map structs and pass the offsets correctly

    • Fix the net.TCPConn and buffer addresses for ABI0

    • Remove comment

    • Fix the issues for arm64 build

    • Update x86.o

    • Revert "Fix the issues for arm64 build"

    This reverts commit 48b041b1b60526658a1fa8774e5b24708af5b8a3.

    • Revert user_pt_regs

    • Add vmlinux directory

    • Fix the build.sh and Dockerfile

    • Add vmlinux_arm64.h

    • Disable get_goid_from_thread_local_storage on ARM64 with a macro

    • Update x86.o

    • Update arm64.o

    • x86

    • arm64

    • Fix the cross-compilation issue from x86 to arm64

    • Fix the same thing for x86

    • Use BPF_CORE_READ macro instead of bpf_ringbuf_reserve to support kernel versions older than 5.8

    Also;
    Add legacy version of thread_struct: thread_struct___v46
    Build an additional object file for the kernel versions older than or equal to 4.6 and load them accordingly.
    Add github.com/moby/moby

    • Make #define directives more definitive

    • Select the x86 and arm64 versions of vmlinux.h using macros

    • Put goid offsets into the map before installing uprobe(s)

    • arm64

    • #run_acceptance_tests

    • Remove a forgotten fmt.Printf

    • Log the detected Linux kernel version

    下载附件