Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 209|Svar: 3

[Sikkerhedsviden] Links til EBPF-relateret viden

[Kopier link]
Opslået den 20-10-20 16:47:02 | | |
Dette indlæg blev sidst redigeret af Summer den 21-10-2025 kl. 09:20

https://github.com/iovisor/bcc/blob/master/docs/kernel-versions.md  ebpf对应的 内核版本特性 能解决什么问题 *
https://lore.kernel.org/bpf/ ebpf对应的内核ebpf补丁的信息讨论 *
https://juejin.cn/post/7084515511576313864 linux tracing system 各种tracing框架的对比 分为前端,tracing框架,探针 *




Tidligere:. PriorityQueue prioritetskø i NET6
Næste:AI-agent og AI MCP

Relaterede indlæg

 Udlejer| Opslået den 20-10-20 2025 kl. 16:50:38 |
Både EBPF- og kernemoduler svarer til datakilden for kernelprobes, ikke EBPF's egen
 Udlejer| Opslået den 20-10-20 16:59:33 |
Linux-referencer: Brother Birds Linux-forfatter taiwansk

Hyperlink-login er synlig.
 Udlejer| Opslået den 20-10-2025 kl. 19:30:47 |
https://www.cnblogs.com/revercc/p/17803876.html
Forbindelsen mellem eBPF's uprobe-program og kernen/events/uprobe.c er i det væsentlige, at eBPF-mekanismen genbruger kernens native uprobe-infrastruktur til at implementere hook-funktionen for brugertilstandsfunktioner. Specifikt er eBPF's uprobe en "applikation" af kernel uprobe-frameworket, som er forbundet gennem en intern kernel call chain og datastruktur.
Kerneforbindelse: eBPF er afhængig af kernel uprobe-rammeværket til at implementere hooks
Kernen uprobe.c er kerneimplementeringen af Linux-kernens native user-state probe (uprobe) og er ansvarlig for:
Styr registrering og annullering af brugertilstandsprobes (f.eks. register_uprobe(), unregister_uprobe()).
Håndterer indsættelse af breakpoint (skriver breakpoint-instruktioner til målfunktionsadressen, såsom x86's int3).
Capture breakpoint udløser begivenheder (sidder fast i kernel state processing, når et program køres til et breakpoint).
Kald en forudregistreret callback-funktion (dvs. hook-logik).
eBPF uprobe-programmet (som eksemplet med hook libc.so du skrev) registrerer i bund og grund en uprobe-baseret eBPF callback-funktion med kernen gennem eBPF-loaderen (f.eks. bcc, libbpf), som fuldstændigt er afhængig af infrastrukturen leveret af uprobe.c.
Specifik kaldkæde: strømmen fra eBPF-programmet til uprobe.c
Når du registrerer en uprobe gennem en eBPF-loader (såsom bcc's attach_uprobe), er den underliggende proces som følger:
eBPF-loaderen initierer en registreringsanmodning: Loaderen (såsom bcc's Python-kode) fortæller kernen via et systemkald (såsom bpf() eller perf_event_open()), at "Jeg vil hænge en eBPF-hook på openat-funktionen af libc.so" og sender bytekoden fra eBPF-programmet.
Kernelverifikation og forberedelse af eBPF-programmer Kernel eBPF-verificereren kontrollerer programmets legitimitet for at sikre, at det ikke kompromitterer kernens sikkerhed. Når det er bestået, indlæs eBPF-programmet i kernen og har en "eBPF callback-funktion" (dvs. den uprobe_openat logik, du har skrevet).
Genbrug af uprobe.c's registreringsinterface-kerne vil kalde register_uprobe()-funktionen i uprobe.c, registrere en "native uprobe" og bruge eBPF-callback-funktionen som "trigger-handler" for denne uprobe.
Nøglen her er denne: essensen af eBPF's uprobe er at binde et callback af typen eBPF til kernens native uprobe.
uprobe.c indsætter et breakpoint og venter på, at det bliver udløst. Uprobe.c skriver en breakpoint-instruktion (såsom x86's int3) til brugerens tilstandshukommelse baseret på den registrerede måladresse (openat-adressen i libc.so) og registrerer breakpointets oprindelige instruktion (for at genoptage eksekveringen efter udløsning).
Funktionskald udløser breakpoints, uprobe.c kalder eBPF callbacks Når applikationen kalder libc.so:openat, udløser udførelsen af breakpoint-instruktionen en fælde og falder i kernetilstanden. På nuværende tidspunkt:
Kernen kalder uprobe_handler()-funktionen (kernebehandlingslogik) i uprobe.c.
uprobe_handler() vil tjekke registreringsoplysningerne for breakpunktet og opdage, at det er bundet til et eBPF-callback, så det kalder eBPF-programmet (dvs. det uprobe_openat, du skrev).
Efter at eBPF-programmet er udført (f.eks. ved at indsamle parametre, skrive til ringbuf), genopretter uprobe_handler() den oprindelige instruktion og tillader programmet at fortsætte eksekveringen.
Resumé: Forholdet mellem de to
kernel/events/uprobe.c er den underliggende infrastruktur, som leverer kernefunktioner såsom indsættelse, fangst og genoprettelse af brugerstatus-breakpoints, og er fundamentet for alle brugertilstandsprobes (inklusive eBPF uprobe, gdb-fejlfinding osv.).
Uprobe-programmet i eBPF er en øvre lagapplikation baseret på denne infrastruktur, som registrerer eBPF-callback-funktioner og tillader kernen at udføre eBPF-logik, når uprobe udløses, hvilket opnår effektiv sporing af brugertilstandsfunktioner.
Kort sagt: uprobe for eBPF er "brugeren" og uprobe.c er "serviceudbyderen", og førstnævnte er afhængig af sidstnævnte til at fuldføre registrering, udløsning og udførelse af hooks.
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com