Как да активирам ASLR в двоичен файл на Windows PE?

Как да активирам рандомизирането на оформлението на адресното пространство на изпълним файл?

Забележка: Не използвам Visual Studio или който и да е компилатор, който предоставя опция за /dynamicbase компилатор.

За целите на тази дискусия приемете, че добавям функционалност към компилатор, за да активирам ASLR.

Други PE флагове

Има други опции за изпълними изображения на Windows, които вече знам как да настроя. Например след това IMAGE_FILE_NET_RUN_FROM_SWAP флаг. Задавате опцията PE в двоичния хедър на PE:

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

LI.FileHeader.FileHeader.Characteristics |= IMAGE_FILE_NET_RUN_FROM_SWAP;

UnMapAndLoad(li)

Как се активира Рандомизиране на оформлението на адресното пространство? Това PE флагове ли е? Запис в Манифест на събранието ли е?

Бонус

Как да избера изпълним файл в NX (без изпълнение)?


person Ian Boyd    schedule 25.09.2013    source източник


Отговори (1)


Решението е, че опцията е вградена в PE двоичния хедър. Но по-скоро отколкото

loadedImage.FileHeader.FileHeader.Characteristics

it's in:

loadedImage.FileHeader.OptionalHeader.DllCharacteristics

Къде сте поставили флага:

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

За псевдокод на помощна функция на:

void SetPEOptFlags(String filename, UInt32 flags)
{
   // Any code is released into the public domain. No attribution required.
   LOADED_IMAGE li;
   MapAndLoad(filename, null, li, false, false);
  
   li.FileHeader.OptionalHeader.DllCharacteristics |= flags;
   UnMapAndLoad(li);
}

и след това се обаждам

//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);
person Ian Boyd    schedule 25.09.2013