9

我们有一个项目,其中包含许多 dll 文件,这些文件在应用程序启动时会被加载。dll 文件的基地址确实重叠,因此内存映像被重新定位。是否有可能自动分配基地址或为每个 dll 文件计算“好”基地址的方法?

4

2 回答 2

7

您可以使用平台 SDK 和 Visual Studio 附带的 REBASE 实用程序,我认为可以设置应用程序加载的一大堆 DLLS 的基地址

您向 REBASE 提供组成程序的 DLL 列表,不包括系统 Dll,然后它执行所有 DLL 的虚拟加载并为它们分配新的基地址。

这可以作为最终构建步骤的一部分执行。

Dobbs 博士有一篇关于 rebase的文章和一篇关于 rebaseMicrosoft 文章。

于 2008-10-08T07:25:37.270 回答
3

如果您正在分发 DLL,无论您如何设置基地址,始终存在并非由您编写的其他 DLL 已经加载到该地址的风险(例如全局挂钩 DLL)。

此外,如果您正在为 Vista 构建,您实际上应该使用 /DYNAMICBASE 来启用 ASLR。

这是 msdn 链接:http: //msdn.microsoft.com/en-us/library/bb384887.aspx

于 2008-10-08T12:50:59.127 回答