Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 209|Odpověď: 3

[Bezpečnostní znalosti] Odkazy na znalosti související s EBPF

[Kopírovat odkaz]
Zveřejněno 2025-10-20 16:47:02 | | |
Tento příspěvek naposledy upravila Summer dne 21. 10. 2025 v 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框架,探针 *




Předchozí:. PriorityQueue prioritní fronta v NET6
Další:AI agent a AI MCP

Související příspěvky

 Pronajímatel| Zveřejněno 2025-10-20 16:50:38 |
Oba moduly EBPF i jádra odpovídají datovému zdroji kernelových sond, nikoli vlastnímu EBPF
 Pronajímatel| Zveřejněno 2025-10-20 16:59:33 |
Linuxové reference: Brother Birdův autor Linuxu tchajwanský

Přihlášení k hypertextovému odkazu je viditelné.
 Pronajímatel| Zveřejněno 2025-10-20 19:30:47 |
https://www.cnblogs.com/revercc/p/17803876.html
Spojení mezi uprobe programem eBPF a kernel/events/uprobe.c je v podstatě v tom, že mechanismus eBPF znovu využívá nativní infrastrukturu uprobe jádra k implementaci hook funkce uživatelských stavových funkcí. Konkrétně je eBPF uprobe "aplikací" kernel uprobe frameworku, který je propojen interním řetězcem volání jádra a datovou strukturou.
Jádrové spojení: eBPF spoléhá na kernel uprobe framework pro implementaci hooků
Kernel uprobe.c je základní implementací nativní sondy uživatelského stavu (uprobe) v linuxovém jádru a je zodpovědný za:
Řídit registraci a rušení sond uživatelských států (např. register_uprobe(), unregister_uprobe()).
Zabývá se vkládáním breakpointů (zápis instrukcí breakpointu na adresu cílové funkce, například int3 v x86).
Zachycování spouštěcích událostí breakpointu (zachycených v kernel state processing, když je program vykonán do breakpointu).
Zavolejte předem registrovanou zpětnou volací funkci (tj. logiku háku).
Program eBPF uprobe (například příklad hook libc.so, který jste napsal) v podstatě registruje uprobe funkci eBPF callback s jádrem prostřednictvím eBPF loaderu (např. bcc, libbpf), který zcela spoléhá na infrastrukturu poskytovanou uprobe.c.
Specifický řetězec hovorů: tok z programu eBPF do uprobe.c
Když zaregistrujete uprobe přes eBPF loader (například bcc attach_uprobe), základní proces je následující:
Loader eBPF iniciuje požadavek na registraci Loader (například python kód bcc) sdělí jádru prostřednictvím systémového volání (například bpf() nebo perf_event_open()), že "chci zavěsit eBPF hook na funkci openat libc.so" a předá bajtkód programu eBPF.
Ověřování a příprava eBPF programů Jádrový eBPF ověřovatel kontroluje legitimitu programu, aby se ujistil, že neohrozuje bezpečnost jádra. Po předání načte eBPF program do jádra a použijte "eBPF callback function" (tedy uprobe_openat logiku, kterou jste napsali).
Opětovné použití jádra registračního rozhraní uprobe.c zavolá funkci register_uprobe() v uprobe.c, zaregistruje "nativní uprobe" a použije funkci zpětného volání eBPF jako "trigger handler" tohoto uprobe.
Klíčem je toto: podstatou eBPF uprobe je navázat callback typu eBPF na nativní uprobe jádra.
uprobe.c vloží breakpoint a čeká na jeho spuštění Uprobe.c zapíše breakpoint instrukci (například x86 int3) do uživatelovy stavové paměti na základě registrované cílové adresy (adresa openat v libc.so) a zaznamená původní instrukci breakpointu (pro obnovení vykonávání po spuštění).
Volání funkcí vyvolává breakpointy, uprobe.c volá eBPF callbacky Když aplikace volá libc.so:openat, vykonání instrukce breakpointu spustí past a spadne do stavu jádra. V tuto chvíli:
Jádro volá funkci uprobe_handler() (logiku zpracování jádra) v uprobe.c.
uprobe_handler() zkontroluje registrační informace odpovídající breakpointu a zjistí, že je vázána na eBPF callback, takže zavolá eBPF program (tj. uprobe_openat, který jste napsali).
Po spuštění eBPF programu (např. sběr parametrů, zápis do ringbuf) uprobe_handler() obnoví původní instrukci a umožní programu pokračovat ve vykonání.
Shrnutí: Vztah mezi nimi
kernel/events/uprobe.c je základní infrastruktura, která poskytuje základní schopnosti jako vkládání, zachycení a obnovu breakpointů uživatelského stavu a je základem všech user state probes (včetně eBPF uprobe, gdb buggování atd.).
Uprobe program eBPF je aplikace vyšší vrstvy založená na této infrastruktuře, která registruje funkce zpětného volání eBPF a umožňuje jádru vykonávat logiku eBPF při spuštění upprobingu, čímž dosahuje efektivního sledování uživatelských funkcí.
Stručně řečeno: uprobe pro eBPF je "uživatel" a uprobe.c je "poskytovatel služby", přičemž první spoléhá na to druhého, aby dokončil registraci, spuštění a provedení hooků.
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com