Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 209|Vastaus: 3

[Turvallisuustieto] Linkkejä EBPF:ään liittyvään tietoon

[Kopioi linkki]
Julkaistu 2025-10-20 klo 16:47:02 | | |
Tätä julkaisua on viimeksi muokannut Summer 2025-10-21 klo 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框架,探针 *




Edellinen:. PriorityQueue priority queue NET6:ssa
Seuraava:AI Agent ja AI MCP

Aiheeseen liittyvät julkaisut

 Vuokraisäntä| Julkaistu 2025-10-20 klo 16:50:38 |
Sekä EBPF- että ydinmoduulit vastaavat ydinprobejen tietolähdettä, eivät EBPF:n omaa
 Vuokraisäntä| Julkaistu 2025-10-20 klo 16:59:33 |
Linux-lähteet: Brother Birdin Linux-kirjoittaja taiwanilainen

Hyperlinkin kirjautuminen on näkyvissä.
 Vuokraisäntä| Julkaistu 2025-10-20 19:30:47 |
https://www.cnblogs.com/revercc/p/17803876.html
Yhteys eBPF:n uprobe-ohjelman ja kernel/events/uprobe.c:n välillä on käytännössä se, että eBPF-mekanismi käyttää ytimen natiivia uprobe-infrastruktuuria käyttäjätilan hook-funktion toteuttamiseen. Tarkemmin sanottuna eBPF:n uprobe on ytimen uprobe-kehyksen "sovellus", joka on yhdistetty sisäisen ytimen kutsuketjun ja tietorakenteen kautta.
Ydinyhteys: eBPF perustuu ytimen uprobe-kehykseen koukkujen toteuttamisessa
Ydin uprobe.c on Linux-ytimen natiivin käyttäjätilaproben (uprobe) ydintoteutus ja vastaa seuraavista:
Hallinnoi käyttäjätila-probejen rekisteröintiä ja peruutusta (esim. register_uprobe(), unregister_uprobe()).
Käsittelee katkopisteen lisäämistä (kirjoittaa breakpoint-käskyt kohdefunktioosoitteeseen, kuten x86:n int3).
Capture breakpoint trigger -tapahtumat (jäävät jumiin ytimen tilan käsittelyyn, kun ohjelma suoritetaan katkopisteelle).
Kutsu esirekisteröity callback-funktio (eli koukkulogiikka).
eBPF uprobe -ohjelma (kuten esimerkiksi hook libc.so, jonka kirjoitit) rekisteröi käytännössä uprobe-pohjaisen eBPF-callback-funktion ytimen mukana eBPF-lataajan (esim. bcc, libbpf) kautta, joka täysin perustuu uprobe.c:n tarjoamaan infrastruktuuriin.
Spesifinen puheluketju: virtaus eBPF-ohjelmasta uprobe.c:hen
Kun rekisteröit uprobin eBPF-lataajan (kuten BCC:n attach_uprobe) kautta, taustalla oleva prosessi on seuraava:
eBPF-lataaja käynnistää rekisteröintipyynnön Lataaja (kuten bcc:n Python-koodi) kertoo ytimelle järjestelmäkutsun (kuten bpf() tai perf_event_open()) välityksellä, että "haluan ripustaa eBPF-koukun libc.so:n openat-funktioon" ja välittää eBPF-ohjelman tavukoodin.
eBPF-ohjelmien ytimen varmennus ja valmistelu Ytimen eBPF-varmennus tarkistaa ohjelman laillisuuden varmistaakseen, ettei se vaaranna ytimen turvallisuutta. Kun se on läpäissytetty, lataa eBPF-ohjelma ytimeen ja saat käyttöön "eBPF-callback-toiminnon" (eli kirjoittamasi uprobe_openat-logiikka).
Uprobe.c:n rekisteröintirajapinnan ytimen uudelleenkäyttö kutsuu register_uprobe()-funktiota uprobe.c:ssä, rekisteröi "natiivin uproben" ja käyttää eBPF:n takaisinkutsutoimintoa tämän uproben "trigger-käsittelijänä".
Avain tässä on tämä: eBPF:n uproben ydin on sitoa tyypin eBPF callback ytimen alkuperäiseen uprobeen.
uprobe.c lisää taukopisteen ja odottaa sen laukeamista. Uprobe.c kirjoittaa taukokäskyn (kuten x86:n int3) käyttäjän tilamuistiin rekisteröidyn kohdeosoitteen (openat-osoite libc.so) perusteella ja tallentaa katkopisteen alkuperäisen käskyn (suorituksen jatkamista varten laukaisun jälkeen).
Funktiokutsut laukaisevat breakpointit, uprobe.c kutsuu eBPF-kutsuja Kun sovellus kutsuu libc.so:openat, breakpoint-käskyn suorittaminen laukaisee ansan ja putoaa ytimen tilaan. Tällä hetkellä:
Ydin kutsuu uprobe_handler()-funktiota (ytimen käsittelylogiikkaa) muodossa uprobe.c.
uprobe_handler() tarkistaa rekisteröintitiedot, jotka vastaavat taukopistettä, ja huomaa, että se on sidottu eBPF-callbackiin, joten se kutsuu eBPF-ohjelmaa (eli uprobe_openat, jonka kirjoitit).
Kun eBPF-ohjelma on suoritettu (esim. parametrien kerääminen, ringbufiin kirjoittaminen), uprobe_handler() palauttaa alkuperäisen käskyn ja sallii ohjelman jatkaa suoritusta.
Yhteenveto: Näiden kahden välinen suhde
kernel/events/uprobe.c on taustalla oleva infrastruktuuri, joka tarjoaa ydinominaisuudet, kuten käyttäjätilan keskeytyspisteiden lisäämisen, kaappauksen ja palautuksen, ja toimii perustana kaikille käyttäjätilaprobeille (mukaan lukien eBPF uprobe, gdb-debugging jne.).
eBPF:n uprobe-ohjelma on ylemmän tason sovellus, joka perustuu tähän infrastruktuuriin ja rekisteröi eBPF-takaisinkutsutoiminnot sekä mahdollistaa ytimen suorittaa eBPF-logiikan uproben käynnistyessä, saavuttaen näin tehokkaan käyttäjätilan funktioiden seurannan.
Lyhyesti: uprobe eBPF:lle on "käyttäjä" ja uprobe.c on "palveluntarjoaja", ja ensimmäinen luottaa jälkimmäiseen koukkujen rekisteröinnin, laukaisun ja suorituksen suorittamisessa.
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com