在Visual Studio中创建无需重定位的可执行文件

时间:2019-04-23 07:52:38

标签: visual-studio visual-c++ compilation portable-executable

我为什么要关心?我正在研究与安全性相关的应用程序,并且该应用程序已签名。重定位会使签名混乱,因此在运行时无法对其进行验证。

并不是我需要重新安置。一切都可以相对完成。也许慢一点。

我如何说服编译器发出无需重定位的代码?

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

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

1 个答案:

答案 0 :(得分:1)

尝试指定/FIXED标志。

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

  

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