Heute Abend ist mir unter Win7 (64bit Pro) ein seltsames Phänomen aufgefallen. Wenn ich regedit.exe beispielsweise nach c:\ kopiere, kann ich es nicht mehr ausführen. Es startet einfach nicht mehr. Wenn ich versuche, es mit Olly DB zu debuggen, sagt Olly, dass es keine gültige 32bit PE-Datei mehr ist. Bei genauerem Hinsehen stellt sich heraus, dass die Datei irgendwie verschlüsselt/neu ausgerichtet ist. Der PE-Header wird 8 Bytes nach hinten verschoben. Die Abschnitte rdata und pdata erscheinen aus dem Nichts.
Was zum Teufel ist hier los?
Grüße, Jan
Antwort1
Es handelt sich nicht um eine gültige 32-Bit-Datei, da C:\Windows\regedit.exe
es sich um eine ausführbare 64-Bit-Datei handelt. Die 32-Bit-Version ist C:\Windows\SysWow64\regedit.exe
.
Ich kann bestätigen, dass keines von beiden ausgeführt wird, wenn es aus dem Standardspeicherort kopiert wird.
Win7 vollbringt im Hintergrund einige Zauberei. Wenn Sie regedit von einem 32-Bit-Prozess aus ausführen, erhalten Sie die 32-Bit-EXE von C:\Windows\SysWow64
. Wenn Sie es von einem 64-Bit-Prozess aus ausführen, erhalten Sie die in C:\Windows. Wenn Ihr 32-Bit-Debugger also denkt, er debuggt, C:\Windows\regedit.exe
hat er tatsächlich C:\Windows\SysWow64\regedit.exe
. Wenn Sie regedit.exe aus kopieren, C:\Windows
erfolgt die Umleitung nicht und Ihr 32-Bit-Debugger hat die 64-Bit-EXE – daher die scheinbare Änderung.
Antwort2
Beim Kopieren regedit.exe
muss unbedingt auch die in einem Unterordner .mui
liegende Datei (zB ) mitkopiert werden, sonst startet es nicht.culture
fr-FR\regedit.exe.mui
Antwort3
Einige der Tools unter NT6 sind in dieser Hinsicht dumm, sie laufen nicht ohne ihre MUI-Dateien (wahrscheinlich im Ordner „en-us“).
Ich habe einmal Regedit gehackt, um es als Administrator ohne erhöhte Rechte auszuführen, und ich musste die ganze Zeit kämpfen, um die gehackte Kopie zum Laufen zu bringen, und ich erinnere mich nicht mehr an die genauen Einzelheiten dessen, was ich tun musste ...