Nivelul de protecție și implementarea paginii de biți a interdicției, dev64

5.13 PROTECȚIA la nivel de pagină și BIT EXECUTE-DISABLE

În plus față de protecția oferită de steaguri U / S (user / supervizor) și R / W (care poate fi citit / inscriptibil), structurile paginate utilizate cu PAE paginare sau paginare IA-32e (vezi cap. 4) prevede biții de execuție interdicție (executedisable ). Acest bit oferă protecție suplimentară la paginile de date. Capacitatea de a interzice pagini de date de performanță vă poate proteja de software rău intenționat încearcă să ruleze cod din paginile de date. O astfel de oportunitate este oferită:

  • 32-biți în modul protejat cu PAE
  • IA-32e în (modul 64 biți) Mod

Deși executa-bit dezactivat nu este nevoie de instrucțiuni suplimentare de prelucrare a face să funcționeze, este necesar să se includă sisteme de operare și modul PAE controlat setarea acestui bit la un nivel de pagină. Dacă bitul este executa-dezactivare pentru pagina este setată, această pagină poate fi utilizat numai pentru date. Incercarea de a executa cod din memoria paginii sapei executa-disable stabilit, are ca rezultat generarea de excepție de pagină defect.

Capacitatea de a interzice executarea codului este acceptat numai în modul PAE și IA-32e și nu este acceptat în mod convențional, pagina 32-biți. Mecanismele existente de protecție a memoriei (a se vedea. Secțiunea 5.11, „nivel de pagină de protecție“) continuă să funcționeze, indiferent de bit executa-dezactivare.

Detectarea și includerea de suport executa-bit dezactivat
5.13.1 Detectarea și Activarea Capability-Execute Disable

Software-ul poate determina prezența podderzhiki executa-bit dezactivat folosind instrucțiunea CPUID. CPUID.80000001H: EDX.NX [bit 20] = 1 înseamnă că executa-disable acceptate. În cazul în care executa-disable este menținută, programul poate permite acesteia să sprijine instalarea IA32_EFER.NXE [bit 11] în 1-zu.
IA32_EFER disponibile în cazul în care CPUID.80000001H.EDX [20 biți sau 29] = 1. În cazul în care executa-disable nu este acceptată, instalația de intrare IA32_EFER.NXE #GP provoacă o excepție. A se vedea. Tabelul 5-4.


(Tabel de manuale Intel)

Paginile de protecție cu Execute Disable-
5.13.2 Execute-Dezactivați protecția paginii

Execută-bit dezactivat în pagină structura îmbunătățește protecția paginilor de date. Instrucțiuni de procesor poate fi încărcat de memorie dacă IA32_EFER.NXE = 1 si executa-bit dezactivat este setat la orice structură de paginare utilizată pentru a afișa pagina. Tabelul 5-5 listează utilizarea permisă a paginii, în funcție de valoarea bitului executedisable (bit 63) din înregistrarea corespunzătoare pe fiecare nivel de structuri de pagină. interdicție de executare poate fi activat folosind bitul execute-disable la orice nivel al structurilor de pagină, indiferent de valoarea bitului corespunzător din celelalte niveluri. Când executați-disable nu este activat, pagina poate fi utilizată ca o pagină de date, și cum să cod.

Nivelul de protecție și implementarea paginii de biți a interdicției, dev64

(Tabel de manuale Intel)

Pentru 32 de biți în modul PAE efectul setarea bitului executa-dezactivare pentru paginile de cod și datele afișate Tabelul 5-6, 5-7.

Nivelul de protecție și implementarea paginii de biți a interdicției, dev64

(Conducerea Mese Intel)

Verificarea biți redundante
5.13.3 Bit Verificarea rezervate

Tabelul 5-8 prezintă biții rezervați atunci când bitul scanat de verificare a executa-dezactivare este activat în procesorul (CR4.PAE = 1 și IA32_EFER.NXE = 1). Tabelele 5-8 și 5-9 arată testul la următorul modul de pagină:

  • Non-PAE 4-KByte paginare: 4-KByte-page numai paging (CR4.PAE = 0,
    CR4.PSE = 0).
  • PSE36: 4-Kbyte și 4-MByte pagini (CR4.PAE = 0, CR4.PSE = 1).
  • PAE: 4-Kbyte și 2-MByte pagini (CR4.PAE = 1, CR4.PSE = X).
  • Nivelul de protecție și implementarea paginii de biți a interdicției, dev64

    (Tabel de manuale Intel)

    Dacă testul executa dezactivare nu este inclus sau nu este disponibil, verificați în modul pe 64 de biți implică inclusiv 63 de biți de verificare. Verificarea acestor și a altor biți sunt rezervate pentru moștenirea (moștenire) modul pe 32 de biți este prezentat în Tabelul 5-10.

    Nivelul de protecție și implementarea paginii de biți a interdicției, dev64

    (Tabel de manuale Intel)

    Manipularea excepțiilor
    Manipularea 5.13.4 Excepție

    vina pagina Executare-dezactivare poate apărea la orice nivel de privilegiu. Ea poate apărea atunci când descărcați orice instrucțiuni, inclusiv (dar fără a se limita la acestea): închide ramura, tranziții lungi, CALL / RET / INT / IRET, featches instrucțiuni secvențiale și sarcina de comutație. Execută-bit dezactivat

    • IA32_EFER.NXE = 1.
    • Traducerea de instrucțiuni tampon-uite deoparte (ITLB) este încărcat cu o pagină care este
      nu sunt deja prezente în ITLB.