Delphi 2007 (und neuer) unterstützt die Aktivierung von DEP und ASLR über eine dieser drei Methoden :
–dynamicbase
hinzu
{$DYNAMICBASE ON}
zum Quellcode {$SETPEOPTFLAGS }
im Quelltext Ich möchte mit Delphi 2006 und C ++ Builder 2006 (auch bekannt als BDS 2006) das Gleiche machen können. Weiß jemand, wie man das macht?
Legen Sie PE-Kennzeichen fest
Sie können {$SetPEOptFlags }
verwenden, um das DEP-Flag festzulegen, und {$SetPEOptFlags 0}
, um das ASLR-Flag festzulegen. Verwenden Sie {$SetPEOptFlags 0}
.
Wenn Sie eine Version von Delphi mit den notwendigen Definitionen in der Windows.pas-Einheit haben, können Sie die viel besser lesbaren verwenden:
%Vor% Normalerweise fügen Sie die Einstellung $SetPEOptFlags
in die .dpr-Datei ein. Daher müssen Sie sicherstellen, dass Windows
in der .dpr-Datei uses-Klausel für diese IMAGE_XXX
-Konstanten verfügbar ist.
Festlegen der DEP-Richtlinie zur Laufzeit
Für Versionen, die PE-Flag-basierte Ansätze nicht unterstützen, können Sie diese Funktion früh bei der Initialisierung Ihrer App aufrufen:
%Vor%Dies wird für jede Version von Delphi funktionieren.
Sie können das ASLR-Flag nicht zur Laufzeit setzen, da es Einfluss darauf hat, wie das Modul geladen wird. Daher kann ASLR nur mit PE-Flags gesetzt werden.
Ändern von PE-Flags für sehr alte Versionen von Delphi
Ältere Versionen von Delphi unterstützen $SetPEFlags
und $SetPEOptFlags
nicht. Für solche Versionen müssen Sie ein externes Tool verwenden, um den ausführbaren Post-Build zu modifizieren. Als ich diese Antwort ursprünglich schrieb, nahm ich an, dass EDITBIN
von der MS-Toolchain die Aufgabe übernehmen würde. Für DEP wird es ausreichen, die Option /NXCOMPAT
zu verwenden. Für ASLR müssen Sie einen anderen PE-Flag-Editor verwenden. Meine Websuche ergab peflags
von cygwin.
Ich bin mir sicher, dass andere PE-Flag-Bearbeitungsoptionen verfügbar sind.
'{$ DYNAMICBASE ON}' ist neu in Delphi2007, '{$ SETPEOPTFLAGS $ 40}' war eine bestehende Anweisung: info
{$ SetPEOptFlags $ 40} funktioniert in Delphi2006
Tags und Links delphi c++builder