2008-10-08 93 views
9

我們有一個項目,包含許多在應用程序啓動時加載的dll文件。 dll文件的baseaddresses確實重疊,以便重新定位內存映像。是否有可能自動分配基地址或爲每個dll文件計算「良好」baseaddress的方法?如何將/ baseaddress設置爲「良好」值?

回答

7

可以使用REBASE實用工具所附帶平臺SDK,並與Visual Studio我認爲設置在機應用

您提供與DLL列表REBASE裝了一大堆的DLL的基址組成您的程序,不包括系統Dll,它會執行所有DLL的虛擬加載併爲它們分配新的基址。

這可以作爲最終構建步驟的一部分來執行。

上有基礎重建here一個布斯博士的文章和重訂基期一般here

+1

我發現我可以調用REBASE.EXE -d -b 0x60000000 * .dll來完成此操作。 – frast 2008-10-08 07:39:31

3

如果您正在分發的DLL微軟的文章,無論您如何設置你的基地址,總是有風險,其他的DLL不由您編寫的代碼已經加載到該地址(例如全局鉤子DLL)。

此外,如果您正在爲Vista,您應該實際使用/ DYNAMICBASE啓用ASLR踢

這裏是MSDN鏈接:http://msdn.microsoft.com/en-us/library/bb384887.aspx