Was ist der Ersatz für REBASE.EXE?

8

Ich muss die Gruppe von DLL-Dateien, die ich mit meinem Programm installiere, neu erstellen, da es sich um ein 32-Bit-Programm handelt und der Adressraum gerade zu fragmentiert ist. Außerdem gibt es das Problem, dass die Gesamtheit der DLLs bei einem Kaltstart in den Arbeitsspeicher ausgelagert wird, so dass der Lader sie aufgrund von Basisadressenkonflikten mit einigen DLLs neu bereitstellen kann. Einige DLLs sind diejenigen, die wir kompiliert haben; andere stammen von Dritten.

Was ich tun möchte, ist ein Werkzeug, das einen gegebenen Satz von DLLs neu erstellt, so dass die Gruppe von DLLs einen zusammenhängenden Speicherblock belegt. Dieses Tool wird dann unmittelbar vor dem Kompilieren des Setup-Programms ausgeführt, und die neu erstellten DLLs werden im privaten Verzeichnis der Anwendung installiert.

Soweit ich weiß, macht das REBASE.EXE-Tool, das zu Windows SDK gehört, genau das. Gib es einige DLLs, und es macht sie neu.

Leider ... Windows Software Development Kit (SDK) für Windows 8 Consumer Preview sagt:

  

Tools Viele veraltete oder veraltete Tools wurden aus dem Windows SDK entfernt. Die folgenden Tools wurden entfernt:

     

& lt; Schnipsel & gt; ReBase.exe

Was jetzt? Ich möchte nicht ein Tool verwenden, das scheinbar veraltet ist und in der nächsten Windows-Version verschwinden wird. Angenommen, ich lese dieses Recht, was ist der Ersatz für die Verwendung von ReBase.exe? Ich möchte mich auf die Verwendung von Tools beschränken, die mit Windows SDK und / oder Visual Studio geliefert werden, anstatt Tools von Drittanbietern einzuführen und / oder meinen eigenen Rebase-Code zu schreiben.

Oder nähere ich mich dem ganzen Problem auf die falsche Art?

    
James Johnston 11.04.2012, 21:50
quelle

3 Antworten

10

editbin.exe kommt mit VS2010 und hat eine / REBASE-Option.

%Vor%

Und wie Mark darauf hinweist, sollten Sie ASLR ausschalten, was Sie mit /DYNAMICBASE:no

tun können     
jcopenha 11.04.2012, 22:01
quelle
3

Der Grund, warum Rebase.exe veraltet ist, ist, dass es nicht mehr so ​​nützlich ist wie früher. Ab Windows Vista hat Microsoft Adressraumlayout-Randomisierung implementiert, das die System-DLLs bei jedem Laden verschiebt und optional die Benutzer-DLLs.

Wenn Sie darauf zählen, einen großen zusammenhängenden Adressraum zu generieren, werden Sie enttäuscht sein.

    
Mark Ransom 11.04.2012 22:00
quelle
3

Ganz zu schweigen von der Verwendung von "REBASE.EXE -b 0x58000000 -e 0x10000 -c coffbase.txt * .dll" gegen eine Reihe von Dateien, einfach um die COFFBASE-Datei zu generieren.
Mit anderen Worten nicht, weil Sie beabsichtigen, Ihre Dateien jetzt neu zu referenzieren, sondern weil Sie eine genaue COFFBASE.TXT,
wünschen so dass sie bei jeder Erstellung mit einer spezifischen und nicht konfligierenden Basisadresse erstellt werden / werden.

    
Alan 18.10.2012 21:23
quelle