Benutzer mit den meisten Antworten
In welchem Kontext ist Speicherschutz zu verstehen?

Frage
-
Hallo,
ich habe ein kleines Verständnisproblem z. Th. Speicherschutz.
Oft gehört:"Jeder Prozess hat seinen eigenen virtuellen Speicherbereich für Daten und Programmcode. Prozesse können weder absichtlich noch versehentlich auf den Adressraum eines anderes Prozesses zugreifen."
Wie ist das zu verstehen, wenn doch Prozess A durch WinAPI Aufrufe (ReadProcessMemory, WriteProcessMemory) den Speicherbereich von Prozess B manipulieren kann? Jetzt kann man sagen, dass ja nicht Prozess A den Speicher von Prozess B manipuliert, sondern das Betriebssystem. Okay, so erfolgt der Speicherzugriff OS-verwaltet. Nichts desto trotz kann iregendein Prozess dem Betriebssystem sagen, es möge bestimmte Werte an eine bestimmte Adresse schreiben.
Wie bzw. aus welcher Perspektive ist dann der Speicherschutz zu verstehen.
Vielen Dank und viele Grüße
3b- Bearbeitet 3b Freitag, 26. Februar 2010 17:25 Rechtschreibung
Antworten
-
Hallo,
ich empfehle, sich mit den Konzepten einer Speicherverwaltung als solches zu beschäftigen,
ein Einstiegspunkt: http://de.wikipedia.org/wiki/Virtuelle_Speicherverwaltung
(Und wenn englisch kein Problem ist, auch die teilweise ausführlicheren englischen Seiten).
Danach sind die Beschreibungen in der Windows API Dokumentation
leichter verständlich sein: Virtual Address Space
Wie dort nachzulesen, ist steht dabei im Vordergrund die Verwaltung des Speichers,
woraus sich nur eine indirekte Abschottung des Speichers ergibt,
da jeder Prozess zunächt nur "seinen" Speicher sieht.
Wobei moderne Prozessoren weitere Schutzfunktionen eingebaut haben, die u. a.
von der Data Execution Prevention (siehe auch KB875352 ) genutzt werden.
Zu ReadProcessMemory und Co.:
Dabei handelt es sich immer um einen absichtlichen Zugriff -
den Grund (bösartig oder nicht) dabei hintenangestellt.
Sie sind nicht umsonst in der Kategorie der Debugging Funktionen zu finden;
denn beim Entwickeln muß man sich Zugriff auf einen anderen Prozess verschaffen,
um das Entwanzen überhaupt zu ermöglichen. Anderes wären Debugger wie in
Visual Studio gar nicht möglich und erfordern im allgemeinen höhere Zugriffsrechte.
Sie arbeiten mit den Speicherfunktionen wie VirtualAllocEx eng zusammen.
Die Zugriffsrechte auf einen Prozess und seinen Speicher werden ähnlich
geregelt wie der auf Dateien und Ordner: Process Security and Access Rights
Und verhindern u. a. so, dass auf die Prozesse (eines anderen Kontos)
zugegriffen werden kann. Voraussetzung sind richtig gesetzte Zugriffsrechte,
siehe z. B.: Best Practices for the Security APIs
Nur haben Programme (immer) Fehler, weil Menschen Fehler machen.
Und so kann ein Schutz, so gut er durchdacht ist, unterlaufen werden.
Gruß Elmar- Als Antwort markiert 3b Samstag, 27. Februar 2010 11:32
Alle Antworten
-
Hallo,
ich empfehle, sich mit den Konzepten einer Speicherverwaltung als solches zu beschäftigen,
ein Einstiegspunkt: http://de.wikipedia.org/wiki/Virtuelle_Speicherverwaltung
(Und wenn englisch kein Problem ist, auch die teilweise ausführlicheren englischen Seiten).
Danach sind die Beschreibungen in der Windows API Dokumentation
leichter verständlich sein: Virtual Address Space
Wie dort nachzulesen, ist steht dabei im Vordergrund die Verwaltung des Speichers,
woraus sich nur eine indirekte Abschottung des Speichers ergibt,
da jeder Prozess zunächt nur "seinen" Speicher sieht.
Wobei moderne Prozessoren weitere Schutzfunktionen eingebaut haben, die u. a.
von der Data Execution Prevention (siehe auch KB875352 ) genutzt werden.
Zu ReadProcessMemory und Co.:
Dabei handelt es sich immer um einen absichtlichen Zugriff -
den Grund (bösartig oder nicht) dabei hintenangestellt.
Sie sind nicht umsonst in der Kategorie der Debugging Funktionen zu finden;
denn beim Entwickeln muß man sich Zugriff auf einen anderen Prozess verschaffen,
um das Entwanzen überhaupt zu ermöglichen. Anderes wären Debugger wie in
Visual Studio gar nicht möglich und erfordern im allgemeinen höhere Zugriffsrechte.
Sie arbeiten mit den Speicherfunktionen wie VirtualAllocEx eng zusammen.
Die Zugriffsrechte auf einen Prozess und seinen Speicher werden ähnlich
geregelt wie der auf Dateien und Ordner: Process Security and Access Rights
Und verhindern u. a. so, dass auf die Prozesse (eines anderen Kontos)
zugegriffen werden kann. Voraussetzung sind richtig gesetzte Zugriffsrechte,
siehe z. B.: Best Practices for the Security APIs
Nur haben Programme (immer) Fehler, weil Menschen Fehler machen.
Und so kann ein Schutz, so gut er durchdacht ist, unterlaufen werden.
Gruß Elmar- Als Antwort markiert 3b Samstag, 27. Februar 2010 11:32