Wie nutzt man DEP und ASLR?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Kukulkan
Beiträge: 1066
Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Kontaktdaten:

Wie nutzt man DEP und ASLR?

Beitrag 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
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Re: Wie nutzt man DEP und ASLR?

Beitrag 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.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Re: Wie nutzt man DEP und ASLR?

Beitrag 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.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
Kukulkan
Beiträge: 1066
Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Kontaktdaten:

Re: Wie nutzt man DEP und ASLR?

Beitrag 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
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Re: Wie nutzt man DEP und ASLR?

Beitrag 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)
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Re: Wie nutzt man DEP und ASLR?

Beitrag 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
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Wie nutzt man DEP und ASLR?

Beitrag 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.
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.
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Re: Wie nutzt man DEP und ASLR?

Beitrag 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.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Wie nutzt man DEP und ASLR?

Beitrag 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:
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.
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Re: Wie nutzt man DEP und ASLR?

Beitrag 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. ^^
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Antworten