首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何启用exe文件的ASLR

如何启用exe文件的ASLR
EN

Stack Overflow用户
提问于 2016-11-09 12:02:37
回答 2查看 2K关注 0票数 1

我编写了一个简单的python脚本(只是一个消息框),并使用pyInstaller使其可执行。我想使用Powershell脚本Invoke-ReflectivePEInjection.ps1反射加载那个exe文件,但是powershell抛出了一个错误(PE文件不支持ASLR )

有没有任何方法使ASLR兼容从python脚本执行文件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-09 12:05:16

有一个名为editbin的工具,可用于更改PE文件设置。在您的例子中,/DYNAMICBASE/HIGHENTROPYVA似乎适用。在创建可执行文件之后使用该工具。

票数 1
EN

Stack Overflow用户

发布于 2017-07-17 21:37:14

请参阅如何确定EXE (或DLL)是否参与ASLR,即是否可以重新定位?

ASLR意味着您的基本地址将被随机化,因此所有绝对内存引用都将被破坏。也就是说,如果编译器和链接器假定基址为0x04000000,并且存在对0x0400102F的绝对内存引用,但您的模块实际上在0x05000000加载,则必须将0x01000000添加到引用0x0400102F的机器代码中硬编码的绝对地址,以便它现在引用0x0400102F。这些代码修复称为基本重定位,它们是在加载可执行文件时由windows加载程序执行的。这些修复必须做的地方是包括在可执行文件,只有当它是可重定位的。

如果设置了文件头的“特征”字段中设置的IMAGE_FILE_RELOCS_STRIPPED (0x0001)位标志,则此可执行文件没有重新定位,因此不能将其放置在标头中的基地址以外的任何地方,因此如果在此可执行文件中启用ASLR,则会因为内存引用不正确而中断。您还可以编写独立于位置的代码,它可以在内存中的任何位置正确运行,而不需要加载时间重新定位。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40506564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档