none
In welchem Kontext ist Speicherschutz zu verstehen? RRS feed

  • 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
    Freitag, 26. Februar 2010 17:22

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
    Freitag, 26. Februar 2010 19:11

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
    Freitag, 26. Februar 2010 19:11
  • Wow,

    vielen Dank für die ausführliche Antwort!

    Dann fang' ich mal an zu lesen ;)

    Gruß

    3b
    Freitag, 26. Februar 2010 19:18