在Visual Studio中创建没有重定位的可执行文件

问题描述 投票:1回答:1

我为什么在意?我正在研究与安全相关的应用程序,并且已签名。重定位会破坏签名,因此无法在运行时进行验证。

而且我不需要重新安置。一切都可以相对完成。可能有点慢。

如何说服编译器在没有重定位的情况下发出代码?

Visual Studio 2015,C ++和某些部分的nasm,x64。

编辑:澄清,我仍然需要它与位置无关。因为我无法控制程序的加载位置。只是通过使用相对访问而不是重定位。

visual-studio visual-c++ compilation portable-executable
1个回答
1
投票

尝试指定/FIXED标志。

根据文件(https://docs.microsoft.com/en-us/cpp/build/reference/fixed-fixed-base-address?view=vs-2015):

指定/ FIXED时,LINK不会在程序中生成重定位部分。在运行时,如果操作系统无法在指定的地址加载程序,它将发出错误消息并且不加载程序。

© www.soinside.com 2019 - 2024. All rights reserved.