gpt4 book ai didi

aslr - 如何在 Windows PE 二进制文件中启用 ASLR?

转载 作者:行者123 更新时间:2023-12-04 00:40:43 24 4
gpt4 key购买 nike

如何启用可执行文件的地址空间布局随机化?

注意:我没有使用 Visual Studio 或任何提供 /dynamicbase 编译器选项的编译器。

为了讨论的目的,假设我正在向编译器添加功能以启用 ASLR。

其他PE标志

我已经知道如何设置其他 Windows 可执行镜像选项。例如,然后是 IMAGE_FILE_NET_RUN_FROM_SWAP 标志。您在 PE 二进制 header 中设置 PE 选项:

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

LI.FileHeader.FileHeader.Characteristics |= IMAGE_FILE_NET_RUN_FROM_SWAP;

UnMapAndLoad(li)

如何启用地址空间布局随机化?是PE标志吗?它是 Assembly Manifest 条目吗?

奖金

如何将可执行文件选择为 NX(不执行)?

最佳答案

解决方案是将选项 嵌入到PE 二进制头文件中。而不是

loadedImage.FileHeader.FileHeader.Characteristics

它在:

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);

关于aslr - 如何在 Windows PE 二进制文件中启用 ASLR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19012480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com