On peut probablement écrire des fonctions pour les parcourir (avec tous les problèmes classiques de cohérence des infos si on regarde au moment où un thread est inséré/retiré).
il y a effectivement le cas ou l'ordonnanceur va mettre à jour l'état des processus et des threads, et il faut éviter de lire les structures task_struct pour Linux lorsque l'ordonnanceur tourne.
Avec des symboles et une connaissance du guest, c'est tout à fait faisable.
Pour influer sur l'ordonnanceur (et choisir à quel thread on donne la main), ça me semble vraiment difficile sans ajouter un support spécifique dans le noyau.
Il ne s'agit pas de forcer l'ordonnanceur à suivre un certain comportement.
L'objectif est de suivre son fonctionnement, et d'intercepter les appels à certaines fonctionnes cruciales,
comme switch_to (Linux) ou KiSwapThread (Windows), qui vont scheduler un nouveau thread pour execution, et reprendre la main à ce moment là.
Encore une fois, c'est la connaissance du guest via Rekall qui nous fournit l'emplacement de ces symboles, ainsi que les offsets des structures en mémoire.
Donc possible et pas (si) impossible que ça en à l'air au premier abord :)
[^] # Re: Prometteur
Posté par Wenzel . En réponse à la dépêche pyvmidbg : un débogueur full‐system basé sur l’introspection de machine virtuelle. Évalué à 1.
il y a effectivement le cas ou l'ordonnanceur va mettre à jour l'état des processus et des threads, et il faut éviter de lire les structures
task_structpour Linux lorsque l'ordonnanceur tourne.Avec des symboles et une connaissance du guest, c'est tout à fait faisable.
Il ne s'agit pas de forcer l'ordonnanceur à suivre un certain comportement.
L'objectif est de suivre son fonctionnement, et d'intercepter les appels à certaines fonctionnes cruciales,
comme
switch_to(Linux) ouKiSwapThread(Windows), qui vont scheduler un nouveau thread pour execution, et reprendre la main à ce moment là.Encore une fois, c'est la connaissance du guest via Rekall qui nous fournit l'emplacement de ces symboles, ainsi que les offsets des structures en mémoire.
Donc possible et pas (si) impossible que ça en à l'air au premier abord :)