2017-06-16 59 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

相關問題