如果我们使用ASLR,那么我认为在我们的构建期间重新设置我们的dll是没有意义的,因为当内核加载时dll会再次被重新设置?
我担心我们的应用程序经常用在终端服务机器上.因此,如果在加载时发生重新定位,我们最终可能会为每个加载的进程重新设置dll(每个会话将有一个进程).这将导致更多的内存使用和分页,而不是我们想要支付的.我需要担心吗?
我发现以下博客文章说,变基只发生一次,它是系统范围的:Matt Evans - 启用ASLR节省内存?.我没有看到任何其他关于此的引用,所以只是想确定我是否使用ASLR并且在构建期间不进行rebase我不会在终端服务盒上导致内存问题?
所以根据我的阅读,你应该没有问题。ASLR 导致 dll 被加载到半随机内存地址,并且不应该为每个进程开始变基。如果您想检查 dll 的内存使用情况,有一个名为 MassiveRebase 的免费工具,它可以让您动态加载两个 dll 并查看有关其内存使用情况的信息。旨在查看 aslr 可能对内存造成的更改。该工具及其更多信息可以在这里找到:http://www.tmurgent.com/appv/index.php/en/resources/tools/137-massive-rebase
希望这可以帮助。