2009-09-13 10 views
8

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)

+3

chiediti: dovrei davvero scrivere un ring 0 processo kernal? –

+0

In realtà, dicci perché desideri eseguire l'anello 0 e ti diremo se è una buona soluzione oppure no. – Artelius

+0

@Mitch: cerca KERNAL in Wikipedia. È un errore ortografico. – Artelius

risposta

16

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

+0

Come posso scrivere un driver di periferica Windows? –

+0

Modificato la mia risposta. – Artelius

+0

Grazie, questo è molto buono e utile! –

2

Non è possibile impostare la modalità kernel da un processo in modalità utente. Ecco come funziona la sicurezza.

7

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.

Problemi correlati