Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 209|Répondre: 3

[Connaissances sur la sécurité] Liens vers les connaissances liées à l’EBPF

[Copié le lien]
Publié le 20-10-2025 à 16:47:02 | | |
Ce post a été modifié pour la dernière fois par Summer le 21-10-2025 à 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框架,探针 *




Précédent:. File de priorité PriorityQueue dans NET6
Prochain:Agent IA et MCP IA
 Propriétaire| Publié le 20-10-2025 à 16:50:38 |
Les modules EBPF et noyau correspondent tous deux à la source de données des sondes noyau, et non à celle propre à EBPF
 Propriétaire| Publié le 20-10-2025 à 16:59:33 |
Références Linux : Brother Bird’s Linux Author Taiwanese

La connexion hyperlientérée est visible.
 Propriétaire| Publié le 20-10-2025 à 19:30:47 |
https://www.cnblogs.com/revercc/p/17803876.html
Le lien entre le programme uprobe d’eBPF et le noyau/events/uprobe.c réside essentiellement dans le fait que le mécanisme eBPF réutilise l’infrastructure native uprobe du noyau pour implémenter la fonction hook des fonctions d’état utilisateur. Plus précisément, l’uprobe d’eBPF est une « application » du framework kernel uprobe, qui est relié via une chaîne d’appels interne au noyau et une structure de données.
Connexion principale : eBPF s’appuie sur le framework kernel uprobe pour implémenter les hooks
Le noyau uprobe.c est l’implémentation centrale de la sonde native d’état utilisateur (uprobe) du noyau Linux et est responsable de :
Gérer l’enregistrement et l’annulation des sondes d’état utilisateur (par exemple, register_uprobe(), unregister_uprobe()).
Gère l’insertion de points d’arrêt (écrire les instructions de point d’arrêt à l’adresse de la fonction cible, comme l’int3 de x86).
Capturez les événements déclencheurs de point d’arrêt (bloqués dans le traitement de l’état du noyau lorsqu’un programme est exécuté jusqu’à un point d’arrêt).
Appelez une fonction de rappel préenregistrée (c’est-à-dire la logique de hook).
Le programme eBPF uprobe (comme l’exemple du hook libc.so que vous avez écrit) enregistre essentiellement une fonction de rappel eBPF basée sur uprobe auprès du noyau via le chargeur eBPF (par exemple, bcc, libbpf), qui repose entièrement sur l’infrastructure fournie par uprobe.c.
Chaîne d’appels spécifique : le flux du programme eBPF vers uprobe.c
Lorsque vous enregistrez une uprobe via un chargeur eBPF (comme le attach_uprobe de bcc), le processus sous-jacent est le suivant :
Le chargeur eBPF lance une requête d’enregistrement Le chargeur (comme le code Python de bcc) informe le noyau via un appel système (comme bpf() ou perf_event_open()) que « je veux accrocher un hook eBPF à la fonction openat du libc.so » et transmet le bytecode du programme eBPF.
Vérification du noyau et préparation des programmes eBPF Le vérifiateur eBPF du noyau vérifie la légitimité du programme afin de s’assurer qu’il ne compromet pas la sécurité du noyau. Une fois passé, chargez le programme eBPF dans le noyau et ayez une « fonction de rappel eBPF » (c’est-à-dire la logique uprobe_openat que vous avez écrite).
La réutilisation du noyau de l’interface d’enregistrement de uprobe.c appellera la fonction register_uprobe() dans uprobe.c, enregistrera un « uprobe natif » et utilisera la fonction de rappel eBPF comme « gestionnaire de déclenchement » de cet uprobe.
L’essentiel ici est le suivant : l’essence de l’uprobe d’eBPF est de lier un callback de type eBPF à l’uprobe native du noyau.
uprobe.c insère un point d’arrêt et attend qu’il soit déclenché. Uprobe.c écrit une instruction de point d’arrêt (comme l’int3 de x86) dans la mémoire d’état de l’utilisateur basée sur l’adresse cible enregistrée (l’adresse d’Openat dans libc.so), et enregistre l’instruction originale du point d’arrêt (pour reprendre l’exécution après déclenchement).
Les appels de fonction déclenchent des points d’arrêt, uprobe.c appelle des rappels eBPF Lorsque l’application appelle libc.so :openat, exécuter l’instruction point d’arrêt déclenche un piège et tombe dans l’état noyau. À ce stade :
Le noyau appelle la fonction uprobe_handler() (logique de traitement du noyau) dans uprobe.c.
uprobe_handler() vérifiera les informations d’enregistrement correspondant au point d’arrêt et constatera qu’elles sont liées à un rappel eBPF, donc il appellera le programme eBPF (c’est-à-dire le uprobe_openat que vous avez écrit).
Après l’exécution du programme eBPF (par exemple, collecte de paramètres, écriture sur ringbuf), uprobe_handler() restaure l’instruction originale et permet au programme de poursuivre son exécution.
Résumé : La relation entre les deux
kernel/events/uprobe.c est l’infrastructure sous-jacente, qui fournit des capacités essentielles telles que l’insertion, la capture et la récupération des points d’arrêt d’état utilisateur, et constitue la base de toutes les sondes d’état utilisateur (y compris eBPF uprobe, débogage gdb, etc.).
Le programme uprobe d’eBPF est une application de couche supérieure basée sur cette infrastructure, qui enregistre les fonctions de rappel eBPF et permet au noyau d’exécuter la logique eBPF lorsque uprobe est déclenché, assurant ainsi un suivi efficace de l’état des fonctions utilisateur.
En résumé : uprobe pour eBPF est l'« utilisateur » et uprobe.c est le « fournisseur de service », et le premier dépend du second pour compléter l’enregistrement, le déclenchement et l’exécution des hooks.
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com