Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 209|Válasz: 3

[Biztonsági tudás] Linkek EBPF-hez kapcsolódó tudáshoz

[Linket másol]
Közzétéve: 2025-10-20 16:47:02 | | |
Ezt a bejegyzést utoljára Summer szerkesztette: 2025-10-21, 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框架,探针 *




Előző:. PriorityQueue prioritási sorba a NET6-ban
Következő:AI ügynök és AI MCP

Kapcsolódó bejegyzések

 Háziúr| Közzétéve: 2025-10-20 16:50:38 |
Mind az EBPF, mind a kernel modulok megfelelnek a kernel próbák adatforrásának, nem az EBPF sajátjának
 Háziúr| Közzétéve: 2025-10-20 16:59:33 |
Linux hivatkozások: Brother Bird Linux szerzője, tajvani

A hiperlink bejelentkezés látható.
 Háziúr| Közzétéve: 2025-10-20 19:30:47 |
https://www.cnblogs.com/revercc/p/17803876.html
Az eBPF uprobe programja és a kernel/events/uprobe.c közötti kapcsolat lényegében az, hogy az eBPF mechanizmus újrahasználja a kernel natív uprobe infrastruktúráját a felhasználói állapotfüggvények hook funkciójának megvalósítására. Konkrétan az eBPF uprobe-ja a kernel uprobe keretrendszer "alkalmazása", amely egy belső kernel hívásláncon és adatstruktúrán keresztül kapcsolódik össze.
Magkapcsolat: az eBPF a kernel uprobe keretrendszerre támaszkodik a hookok megvalósításához
A kernel uprobe.c a Linux kernel natív felhasználó-állapotú próbáját (uprobe) a magimplementációja, és felelős a következőkért:
Kezelje a felhasználó-állam próbák regisztrációját és törlését (pl. register_uprobe(), unregister_uprobe()).
Kezeli a megszakítópont behelyezését (megszakítási pont utasításokat ír a célfüggvény címére, például az x86 int3-ára).
Breakpoint trigger események rögzítése (beragadnak a kernel állapotfeldolgozásban, amikor egy programot egy megszakítási ponthoz futtatnak).
Előre regisztrált visszahívási függvényt (azaz hook logicát) hívunk.
Az eBPF uprobe program (például a hook libc.so példája) lényegében egy uprobe alapú eBPF visszahívási függvényt regisztrál a kernelrel az eBPF betöltőn keresztül (pl. bcc, libbpf), amely teljes mértékben az uprobe.c infrastruktúrájára támaszkodik.
Specifikus híváslánc: az eBPF programból az uprobe.c-be terjedő áramlás
Amikor egy uprobe-ot regisztrálsz egy eBPF töltőn keresztül (például a bcc attach_uprobe-én), az alapul szolgáló folyamat a következő:
Az eBPF töltő regisztrációs kérést indít A betöltő (például a bcc Python kódja) rendszerhíváson keresztül (például bpf() vagy perf_event_open()) közli a kernelnek, hogy "szeretnék egy eBPF horgot akasztani a libc.so openat funkciójára", és átadja az eBPF program bájtkódját.
Kernel ellenőrzés és eBPF programok előkészítése Az eBPF kernel ellenőrző ellenőrzi a program legitimitását, hogy ne veszélyeztesse a kernel biztonságát. Miután áthaladt, töltsd be az eBPF programot a kernelbe, és legyen egy "eBPF visszahívási funkció" (azaz az általad írt uprobe_openat logikát).
Az uprobe.c regisztrációs interfész kernelének újrafelhasználása meghívja az uprobe.c register_uprobe() függvényét, regisztrál egy "natív uprobet", és az eBPF visszahívási függvényt használja az uprobe "trigger kezelőjeként".
A kulcs itt az: az eBPF uprobe-jának lényege, hogy egy eBPF típusú visszahívást kötjön a mag natív uprobe-jához.
Uprobe.c egy megszakítópontot helyez be, és várja, hogy elindítsák az Uprobe.c egy megszakítópont-utasítást (például x86 int3-át) ír a felhasználó állapotmemóriájába a regisztrált célcím alapján (az openat címe libc.so-ben), és rögzíti a megszakítópont eredeti utasítását (a végrehajtás folytatásához a trigger után).
A függvényhívások megszakítási pontokat indítanak el, uprobe.c eBPF visszahívásokat hív Amikor az alkalmazás libc.so:openat hívást hív, a megszakítási pont utasítás végrehajtása csapdát indít el, és a kernel állapotba esik. Ekkor:
A mag az uprobe.c formátumban a uprobe_handler() függvényt (kernel feldolgozási logikát) hívja.
uprobe_handler() ellenőrzi a megszakítási ponthoz tartozó regisztrációs adatokat, és megállapítja, hogy az eBPF visszahíváshoz van kötve, így hívja az eBPF programot (azaz azt a uprobe_openat, amit írtál).
Az eBPF program végrehajtása után (pl. paramétergyűjtés, ringbuf-ra írás), a uprobe_handler() visszaállítja az eredeti utasítást, és lehetővé teszi a program végrehajtását.
Összefoglaló: A kettő kapcsolata
kernel/events/uprobe.c az alapvető infrastruktúra, amely alapvető funkciókat biztosít, mint például a felhasználói állapot megszakítási pontok behelyezése, rögzítése és helyreállítása, és az összes felhasználói állapot próbának (beleértve az eBPF uprobe-ot, gdb hibakeresést stb.) alapja.
Az eBPF uprobe programja egy felsőrétegű alkalmazás, amely ezen az infrastruktúrán alapul, amely regisztrálja az eBPF visszahívási funkciókat, és lehetővé teszi a mag számára, hogy eBPF logikát hajtson végre, amikor az uprobe aktiválódik, így hatékony felhasználói állapot függvénykövetést ér el.
Röviden: az eBPF esetén az uprobe a "felhasználó", az uprobe.c pedig a "szolgáltató", az előbbi pedig az utóbbira támaszkodik a hookok regisztrációjának, indításának és végrehajtásának befejezéséhez.
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com