Come posso ottenere la modalità operativa squillo 0 per il mio processo in Windows 7 (o Vista)?Come ottenere la modalità squillo 0 in C++ (Windows)
risposta
Se si consente l'esecuzione di codice arbitrario nell'anello 0, i principi di sicurezza del sistema operativo di base vengono violati.
Solo il kernel del sistema operativo e i driver di periferica funzionano nell'anello 0. Se si desidera scrivere il codice dello squillo 0, scrivere un driver di dispositivo Windows. This potrebbe essere utile.
Alcuni buchi di sicurezza possono consentire il codice per l'esecuzione in ring 0 anche, ma questo non è portatile perché il buco potrebbe essere fissato in una patch: P
Come posso scrivere un driver di periferica Windows? –
Modificato la mia risposta. – Artelius
Grazie, questo è molto buono e utile! –
Non è possibile impostare la modalità kernel da un processo in modalità utente. Ecco come funziona la sicurezza.
Tecnicamente parlando, tutti i processi hanno alcuni thread che trascorrono parte del loro tempo in modalità Kernel (ring 0). Ogni volta che un processo in modalità utente crea un syscall nel sistema operativo, c'è una transizione in cui il thread entra nell'anello 0 tramite un "gate". Ogni volta che un processo deve parlare con un dispositivo, allocare più memoria a livello di processo o generare nuovi thread, viene usato un syscall per chiedere al sistema operativo di fornire questo servizio.
Pertanto, se si desidera che un processo esegua del codice nell'anello 0, è necessario scrivere un driver e quindi comunicare con questo driver attraverso alcune syscalls. Il più comune syscall per questo è chiamato ioctl (sta per I/O Control).
Un'altra cosa da considerare sulla piattaforma Windows è UMDF (User-Mode Driver Framework). Ciò consente di scrivere, eseguire il debug e testare un driver in modalità utente (in esecuzione nell'anello 3) ma è ancora accessibile ad altri driver o altri processi nel sistema.
- 1. Haskell: Come ottenere "\\ 0" in "\ 0"?
- 2. Come disabilitare la modalità verticale in Windows 8?
- 3. Rifiutare una chiamata programmaticamente senza squillo
- 4. Come eseguire emacs in modalità CLI sotto mintty in windows?
- 5. Come impostare la modalità di arresto delle applicazioni in un progetto Windows Form C#?
- 6. Come ottenere la modalità display corrente è mobile in mvc4
- 7. Vim: come ottenere la modalità Sono attualmente in
- 8. Ignorare un errorlevel! = 0 in Windows PowerShell
- 9. Come ottenere la directory di Windows attuale ad es. C: \ in C#
- 10. Come cambiare la modalità dalla modalità C++ 98 in Dev-C++ in una modalità che supporta C++ 0x (range based for)?
- 11. Come eseguire l'esempio di molo con squillo in Clojure
- 12. In che modo Windows protegge la transizione in modalità kernel?
- 13. Come ottenere la home directory dell'utente corrente in Windows
- 14. Windows PID = 0 valido?
- 15. Ottenere GCC in modalità C++ 11 per lavorare su FreeBSD
- 16. Windows Azure: la lunghezza del BLOB rimane 0
- 17. Buffer di squillo singolo produttore/consumatore in memoria condivisa
- 18. visivo Modalità amministratore Studio in Windows 10
- 19. Come sbarazzarsi di -0 in C++
- 20. Come posso ottenere la memoria fisica totale in C#?
- 21. Come ottenere la dimensione del cursore in C#
- 22. Terminale/console/shell Windows in modalità Vi?
- 23. Come ottenere la porta nel protocollo FTP dalla modalità passiva?
- 24. Come ottenere la "cartella temporanea" in Windows 7?
- 25. È possibile ottenere la cosiddetta "modalità senza distrazioni" in Vim?
- 26. Ottenere la larghezza del terminale in C?
- 27. Come si può ottenere l'argv del sistema operativo [0] (non sys.argv [0]) in Python?
- 28. emacs lisp, come ottenere la modalità buffer buffer?
- 29. Come ottenere applicazioni in esecuzione in Windows?
- 30. Debug dell'applicazione in modalità mista (C#, C++)
chiediti: dovrei davvero scrivere un ring 0 processo kernal? –
In realtà, dicci perché desideri eseguire l'anello 0 e ti diremo se è una buona soluzione oppure no. – Artelius
@Mitch: cerca KERNAL in Wikipedia. È un errore ortografico. – Artelius