Wie nutzt man DEP und ASLR?
Wie nutzt man DEP und ASLR?
Hi,
ich hab gerade folgenden Artikel bei heise.de gelesen:
http://www.heise.de/newsticker/meldung/ ... 32385.html
Wie kann man das für PB Programme Nutzbar machen?
Grüsse,
Volker
ich hab gerade folgenden Artikel bei heise.de gelesen:
http://www.heise.de/newsticker/meldung/ ... 32385.html
Wie kann man das für PB Programme Nutzbar machen?
Grüsse,
Volker
Re: Wie nutzt man DEP und ASLR?
Öhm. DEP muss nicht von der Anwendung unterstützt werden. Das ist eine reine Angelegenheit des Windows-Speichermanagment. Es muss lediglich in den Windowseinstellungen aktiviert sein.
DEP heisst nichts anderes als das eine Exception (invalid memory access) geworfen wird, wenn die Programmausführungen einen Speicherbereich erreicht, der kein Executable-Recht hat. Dazu musst du nichts weiter beitragen.
ASLR kenn ich garnicht.
DEP heisst nichts anderes als das eine Exception (invalid memory access) geworfen wird, wenn die Programmausführungen einen Speicherbereich erreicht, der kein Executable-Recht hat. Dazu musst du nichts weiter beitragen.
ASLR kenn ich garnicht.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!

Re: Wie nutzt man DEP und ASLR?
Grad mal in der MSDN geschaut und wenn ich das richtig verstehe ist ASLR seid Vista Bestandteil des Systems und per default aktiv ohne das ein Programm es speziell unterstützen muss. Wüsste auch nicht was man da programmieren sollte für die Unterstützung. Laut MSDN ist ASLR nichts anderes als das Module an zufällige Adressen geladen werden. Das interessiert uns als Programmierer aber wenig, da wir uns die adressen sowieso von Windows geben lassen müssen oder die Import Table nutzen, in der sie von Windows eingetragen werden.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!

Re: Wie nutzt man DEP und ASLR?
Hallo,
Ist das dann gequirlte Schei***?
Volker
Ist das dann gequirlte Schei***?
Komisch... Ich dachte ich könnte meine PB Anwendung auch sicherer machen, wenn ich diese Flags setze.Windows überlässt es der Anwendung, beim Laden durch bestimmte Flags zu signalisieren, ob es DEP und ASLR nutzen will. Während die meisten Microsoft-Anwendungen regen Gebrauch von den Funktionen machen, nutzen laut Secunia Anwendungen anderer Hersteller die Funktionen aber oft gar nicht, nur teilweise oder fehlerhaft. Die Browser Firefox, Opera und Safari beispielsweise unterstützen zwar DEP, aber kein ASLR. Einzig Chrome nutzt beide Optionen.
Volker
Re: Wie nutzt man DEP und ASLR?
Also ich hab auf die Schnelle nichts dazu in der MSDN gefunden, aber teilweise sind die Sachen da auch ziemlich versteckt. ^^Volker Schmid hat geschrieben: Komisch... Ich dachte ich könnte meine PB Anwendung auch sicherer machen, wenn ich diese Flags setze.
Aber hier ein Demonstrationscode, der beweist das DEP funktioniert egal ob die Anwendung dafür ein Flag setzt oder nicht. Allerdings muss dafür DEP auch für alle Anwendungen in den Windowseinstellungen aktiviert werden, per default ist es nur für Services aktiviert.
Also ist DEP deaktiviert gibt es keinen Fehler bei folgendem Code. Ist es für alle Anwendungen aktiviert, bekommen wir einen IMA, da wir versuchen einen Speicherbereich auszuführen der nicht als Executable markiert ist.
Nimmt man das VirtualProtect_ mit rein, dann funktioniert es auch mit DEP, da diese Funktion die Rechte von Speicherseiten anpasst und hier auf ausführbar, lesbar und schreibbar gesetzt wird.
Also beweist eindeutig, das es eine Windowskonfigurationsangelegenheit ist und nicht Sache des Coders.
Code: Alles auswählen
EnableExplicit
Procedure TestCode()
TestCodeStart:
!mov eax,$FFFFFFFF
!xor eax,eax
!ret
TestCodeEnd:
EndProcedure
Define *CodeBuffer
Define OldProtect.i
*CodeBuffer = AllocateMemory(?TestCodeEnd - ?TestCodeStart)
CopyMemory(?TestCodeStart, *CodeBuffer, ?TestCodeEnd - ?TestCodeStart)
;VirtualProtect_(*CodeBuffer, ?TestCodeEnd - ?TestCodeStart, #PAGE_EXECUTE_READWRITE, @OldProtect)
CallFunctionFast(*CodeBuffer)
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!

Re: Wie nutzt man DEP und ASLR?
Zum Einstellen unter Win7:
Control Panel -> System and Security -> System -> System Protection -> Advanced -> Performance Settings -> Data Execution Prevention -> Turn on DEP for all programs and services except those I select -> Neustart
Control Panel -> System and Security -> System -> System Protection -> Advanced -> Performance Settings -> Data Execution Prevention -> Turn on DEP for all programs and services except those I select -> Neustart
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!

-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Re: Wie nutzt man DEP und ASLR?
Habt ihr diesen Dialog noch nie gesehen?
http://www.google.de/images?hl=de&q=dat ... a=N&tab=wi
Er ist durch Systemsteuerung > System > Erweiterte Systemeinstellungen (Unter Vista/Windows 7, sonst überspringen) > Erweitert > in dem Frame "Leistung" den Button "Einstellungen ..." anklicken > Datenausführungsverhinderung zu finden
Btw.: Auch unter Linux ist das möglich, nur so nebenbei. Das einzige was einen Prozess dabei schützt sind die Benutzerrechte mit denen er bzw andere Prozesse gestartet wird/werden.
http://www.google.de/images?hl=de&q=dat ... a=N&tab=wi
Er ist durch Systemsteuerung > System > Erweiterte Systemeinstellungen (Unter Vista/Windows 7, sonst überspringen) > Erweitert > in dem Frame "Leistung" den Button "Einstellungen ..." anklicken > Datenausführungsverhinderung zu finden
Btw.: Auch unter Linux ist das möglich, nur so nebenbei. Das einzige was einen Prozess dabei schützt sind die Benutzerrechte mit denen er bzw andere Prozesse gestartet wird/werden.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Re: Wie nutzt man DEP und ASLR?
Ne. Meine CPU unterstützt das NX-Bit und damit Hardware-DEP, der Dialog kommt nur bei Software-DEP. Bei Hardware-DEP gibts nen ganz normalen IMA.DarkDragon hat geschrieben:Habt ihr diesen Dialog noch nie gesehen?
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!

-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Re: Wie nutzt man DEP und ASLR?
Ich mein den ersten, den muss man manuell aufrufen, der kommt nicht einfach so.Thorium hat geschrieben:Ne. Meine CPU unterstützt das NX-Bit und damit Hardware-DEP, der Dialog kommt nur bei Software-DEP. Bei Hardware-DEP gibts nen ganz normalen IMA.DarkDragon hat geschrieben:Habt ihr diesen Dialog noch nie gesehen?

Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Re: Wie nutzt man DEP und ASLR?
Achso. ^^DarkDragon hat geschrieben: Ich mein den ersten, den muss man manuell aufrufen, der kommt nicht einfach so.
Na den Weg dahin hab ich ja einen Post über deinem geschrieben. ^^
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!
