Bin ich der Meinung, dass es keinen Sinn hat, unsere dlls während unseres Builds neu zu erstellen, wenn wir ASLR verwenden, da die dlls sowieso wieder rebasiert werden, wenn der Kernel sie lädt?Bedeutet ASLR, dass das Rebasing von DLLs nicht erforderlich ist?
Ich bin besorgt, dass unsere Anwendung oft auf Terminaldienst-Maschinen verwendet wird. Wenn also zum Zeitpunkt des Ladens ein Rebasing durchgeführt wird, könnten die Dlls für jeden Prozess, für den sie geladen werden, rebasiert werden (es würde pro Sitzung einen Prozess geben). Und dies würde zu mehr Speicherverbrauch und Paging führen, als wir bezahlen möchten. Muss ich besorgt sein?
Ich habe den folgenden Blogpost gefunden, der besagt, dass das Rebasieren nur einmal passiert und es systemweit ist: Matt Evans - Enabling ASLR for memory savings?. Ich habe keine anderen Referenzen zu diesem Thema gesehen, also wollte ich nur sicher sein, dass ich, wenn ich ASLR benutze und nicht während des Builds rebase, keine Speicherprobleme in einer Terminaldienste-Box verursachen werde?
Eine weitere Referenz, um das Bit "einmal und systemweit" zu sichern: Windows Internals, Sechste Ausgabe, Teil 2, S.249 sagt das direkt. –
Und Sie haben versucht, Debugger an mehrere Prozesse (in verschiedenen Sitzungen) in der Terminaldienste Box anfügen? Das sollte zeigen, wie die Adresse Ihrer DLL ist. –
https://blogs.msdn.microsoft.com/oldnewthing/20170118-00/ –