Seite 1 von 2

Wie nutzt man DEP und ASLR?

Verfasst: 02.07.2010 15:07
von Kukulkan
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

Re: Wie nutzt man DEP und ASLR?

Verfasst: 02.07.2010 16:49
von Thorium
Ö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.

Re: Wie nutzt man DEP und ASLR?

Verfasst: 02.07.2010 17:11
von Thorium
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.

Re: Wie nutzt man DEP und ASLR?

Verfasst: 02.07.2010 17:43
von Kukulkan
Hallo,

Ist das dann gequirlte Schei***?
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.
Komisch... Ich dachte ich könnte meine PB Anwendung auch sicherer machen, wenn ich diese Flags setze.

Volker

Re: Wie nutzt man DEP und ASLR?

Verfasst: 02.07.2010 19:42
von Thorium
Volker Schmid hat geschrieben: Komisch... Ich dachte ich könnte meine PB Anwendung auch sicherer machen, wenn ich diese Flags setze.
Also ich hab auf die Schnelle nichts dazu in der MSDN gefunden, aber teilweise sind die Sachen da auch ziemlich versteckt. ^^

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)

Re: Wie nutzt man DEP und ASLR?

Verfasst: 02.07.2010 19:46
von Thorium
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

Re: Wie nutzt man DEP und ASLR?

Verfasst: 02.07.2010 19:47
von DarkDragon
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.

Re: Wie nutzt man DEP und ASLR?

Verfasst: 02.07.2010 19:52
von Thorium
DarkDragon hat geschrieben:Habt ihr diesen Dialog noch nie gesehen?
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.

Re: Wie nutzt man DEP und ASLR?

Verfasst: 03.07.2010 10:16
von DarkDragon
Thorium hat geschrieben:
DarkDragon hat geschrieben:Habt ihr diesen Dialog noch nie gesehen?
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.
Ich mein den ersten, den muss man manuell aufrufen, der kommt nicht einfach so. :lol:

Re: Wie nutzt man DEP und ASLR?

Verfasst: 03.07.2010 10:44
von Thorium
DarkDragon hat geschrieben: Ich mein den ersten, den muss man manuell aufrufen, der kommt nicht einfach so. :lol:
Achso. ^^
Na den Weg dahin hab ich ja einen Post über deinem geschrieben. ^^