Wie kann das Betriebssystem bei der x86-64-Architektur festlegen, welche Seiten keinen ausführbaren Code enthalten dürfen?
In the x86-64 architecture, how can the operating system specify which pages cannot contain executable code?
The operating system can tag a page of virtual address space with the No-Execute or NX bit, which is bit 63 of the page table entry.
Das Betriebssystem kann eine Seite des virtuellen Adressraums mit dem No-Execute- oder NX-Bit kennzeichnen, das Bit 63 des Seitentabelleneintrags ist.
information_extraction
Mit dem No-Execute-Bit oder NX-Bit (Bit 63 des Seitentabelleneintrags) kann das Betriebssystem festlegen, welche Seiten des virtuellen Adressraums ausführbaren Code enthalten können und welche nicht. Der Versuch, Code von einer als "nicht ausführbar" gekennzeichneten Seite auszuführen, führt zu einer Speicherzugriffsverletzung, ähnlich wie der Versuch, auf eine schreibgeschützte Seite zu schreiben. Dies sollte es bösartigem Code erschweren, durch "Buffer Overrun" oder "Unchecked Buffer"-Angriffe die Kontrolle über das System zu übernehmen. Eine ähnliche Funktion gibt es auf x86-Prozessoren seit dem 80286 als Attribut von Segmentdeskriptoren; allerdings funktioniert sie nur für jeweils ein ganzes Segment.
de