2017-06-16 63 views
4

我一直在使用Delphi中的{$IMAGEBASE}指令,但是我可以看到我只能放置低于$FFFFFFFF(32位)的值。德尔福:设置大于32位的ImageBase(适用于64位Windows应用程序)

我正在编译为x64,我需要设置一个大于32位的图像库,但Delphi会忽略64位ImageBase中较高的32位DWORD。

是否有人设法将高于$FFFFFFFF的值设置为ImageBase for Delphi?

我需要它,因为我需要在“高”的基址来测试我的应用程序(由于一些挂钩测试等)

谢谢!

+1

如果您运行的是Windows 7(或更早),你可以启用[nolowmem(https://msdn.microsoft.com/en-us/library/ff542202.aspx)的启动选项,将您的应用程序自动加载到4 GB边界以上的地址中。 – IInspectable

回答

8

虽然有新的PE可选标题允许指定大图像基值,但Delphi链接程序不支持大图像库。

所以我认为,直到Embarcadero引入任何这样的功能,你将需要使用第三方工具来重新绑定可执行文件后,它已经建成。例如EDITBIN和MS工具链中的/REBASE选项。

我把一个简单的64位VCL方案,XE7建造,重订它是这样的:

editbin /rebase:base=0xffffff0000 Project1.exe 

我证实使用该图像碱确实作为指定工艺哈克。

enter image description here

+2

或使用'link.exe/edit/rebase:base = * Project1.exe'因为'editbin.exe '只需调用'link.exe /编辑',当然对于这个图片需要使用重定位启用构建,没有这个(relocs)rebase failed – RbMm

+0

非常感谢您的帮助!这确实有效! :) – raff

相关问题