9
votes

Obtenir la sonnerie 0 mode en C ++ (Windows)

Comment puis-je obtenir le mode de fonctionnement de l'anneau 0 pour mon processus sous Windows 7 (ou Vista)?


4 commentaires

Demandez-vous: Devrais-je vraiment écrire un processus d'anneau 0 noyau?


En fait, dites-nous pourquoi vous voulez courir dans la bague 0 et nous vous dirons que c'est une bonne solution ou non.


@Mitch: noyau de recherche à Wikipedia. C'est une mauvaise gestion.


Voir Accéder à l'accès à l'anneau 0 en mode des applications utilisateur (et pourquoi Borland le permet à cela)


3 Réponses :


20
votes

Autoriser le code arbitraire à exécuter dans la bague 0 viole les principes de sécurité du système d'exploitation.

Seuls les pilotes de noyau et de périphérique OS fonctionnent dans la bague 0. Si vous souhaitez écrire un code de sonnerie 0, écrivez un pilote de périphérique Windows. Ce peut être utile.

Certains trous de sécurité peuvent permettre à votre code de fonctionner dans la bague 0 également, mais ce n'est pas portable car le trou peut être fixé dans un patch: P


1 commentaires

Comment puis-je écrire un pilote de périphérique Windows?



2
votes

Vous ne pouvez pas définir le mode de noyau à partir d'un processus de mode utilisateur. C'est ainsi que la sécurité fonctionne.


0 commentaires

7
votes

Techniquement parlant, tous les processus ont des threads qui passent une partie de leur temps en mode noyau (anneau 0). Chaque fois qu'un processus de mode utilisateur rend un système SYSCALL dans le système d'exploitation, il existe une transition dans laquelle le fil se met dans la bague 0 via une «porte». Chaque fois qu'un processus doit parler à un périphérique, allouez plus de mémoire à l'échelle du processus ou de nouveaux threads, un SYSCALL est utilisé pour demander au système d'exploitation de fournir ce service.

Par conséquent, si vous voulez avoir un processus exécuter un code dans la sonnerie 0, vous devez écrire un pilote, puis communiquer avec ce pilote à travers des syscalls. Le syscall le plus courant pour cela s'appelle ioctl (signifie Contrôle des E / S).

Une autre chose à regarder sur la plate-forme Windows est l'UMDF (Cadre de pilote d'utilisateur). Cela vous permet d'écrire, de déboguer et de tester un pilote en mode utilisateur (exécuté dans la bague 3), mais il est toujours accessible à d'autres pilotes ou à d'autres processus du système.


0 commentaires