2012-03-05 10 views
17

Come disabilitare ASLR su Windows 7 x64 in modo che il mio programma carichi sempre il CRT condiviso allo stesso indirizzo?Come si disabilita ASLR (randomizzazione del layout di spazio degli indirizzi) su Windows 7 x64?

+3

Avete _need_ per fare ciò o semplicemente per semplificare qualcosa? –

+1

@unclebrad: ho davvero * bisogno * di fare questo. – Mehrdad

+2

Si noti che questo degrada in modo significativo la sicurezza del sistema e dovrebbe essere fatto solo con il permesso dell'utente. –

risposta

8

Un'impostazione del Registro di sistema è disponibile per abilitare o disabilitare forzatamente ASLR per tutti i file eseguibili e le librerie e si trova in HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\MoveImages.

+13

Non modificare le impostazioni globali del sistema per far funzionare * il tuo * –

+0

+1 Ci proverò. Sembra essere quello di cui ho bisogno, dal momento che cambiarlo in base al programma non influirà sul modo in cui viene caricato il CRT (condiviso). – Mehrdad

+0

^Questo. Ma dovresti ricordare che se questa è un'applicazione distribuita, non dovresti farlo, e se è un MUST ASSOLUTO, chiedi all'utente prima di farlo programmaticamente. –

16

In precedenza si doveva optare per consentire al linker di utilizzare ASLR. Ora, you have to opt out:

/DYNAMICBASE[:NO] 

(Visual Studio 2012: le proprietà di configurazione -> Linker -> Avanzate -> "Base Indirizzo Randomized")

Si può anche farlo programmatically.

+4

Questo è molto utile quando si ha un progetto di cui si sta eseguendo il debug e si preferisce che gli indirizzi nella finestra di controllo non cambino ogni volta. – EvilTeach

16

Il Enhanced Mitigation Experience Toolkit (EMET), downloadable from Microsoft, consente di abilitare/disabilitare ASLR su un sistema o processo base.