2013-09-25 7 views
1

Comment activer la randomisation de la disposition d'espace d'adresse d'un exécutable?Comment activer ASLR dans un binaire Windows PE?

Remarque: Je ne suis pas en utilisant Visual Studio, ou tout compilateur qui fournit une option de compilateur /dynamicbase.

Pour les besoins de cette discussion, supposons que j'ajoute des fonctionnalités à un compilateur pour activer ASLR.

Autres drapeaux PE

Il y a d'autres options d'image exécutable Windows que je sais déjà comment définir. Par exemple, alors drapeau IMAGE_FILE_NET_RUN_FROM_SWAP. Vous définissez l'option de PE dans l'en-tête binaire PE:

LOADED_IMAGE li; 
MapAndLoad(fileName), null, li, false, false) 

LI.FileHeader.FileHeader.Characteristics |= IMAGE_FILE_NET_RUN_FROM_SWAP; 

UnMapAndLoad(li) 

Comment peut-on activer la mise en page Espace Adresse Randomisation? Est-ce un drapeaux PE? Est-ce une entrée Assembly Manifest?

Bonus

Comment puis-je opter un fichier exécutable dans NX (No Execute)?

Répondre

2

La solution est que l'option est intégrée dans l'en-tête binaire PE. Mais plutôt que

loadedImage.FileHeader.FileHeader.Characteristics 

il est dans:

loadedImage.FileHeader.OptionalHeader.DllCharacteristics 

Si vous définissez le drapeau:

IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE = 0x0040; //The DLL can be relocated at load time. 

Pour un pseudo-code fonction d'aide de:

void SetPEOptFlags(String filename, UInt32 flags) 
{ 
    LOADED_IMAGE li; 
    MapAndLoad(filename, null, li, false, false); 

    li.FileHeader.OptionalHeader.DllCharacteristics |= flags; 
    UnMapAndLoad(li); 
} 

et puis en appelant le

//Optional dll characteristics 
const IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE = 0x0040; //The DLL can be relocated at load time. 
const IMAGE_DLLCHARACTERISTICS_NX_COMPAT = 0x0100; //The image is compatible with data execution prevention (DEP). 


SetPEOptFlags("C:\Foo\Contoso.exe", 
    IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE | IMAGE_DLLCHARACTERISTICS_NX_COMPAT); 

Remarque: Tout code est libéré dans le domaine public. Aucune attribution requise.

Questions connexes