c:\windows\regedit.exe のコピーが失敗する

c:\windows\regedit.exe のコピーが失敗する

今夜、win7 (64 ビット プロ) で奇妙な現象に遭遇しました。regedit.exe をたとえば c:\ にコピーすると、実行できなくなりました。単に起動しなくなりました。olly db でデバッグしようとすると、olly は、これはもう有効な 32 ビット pe ファイルではないと言います。よく見ると、ファイルが何らかの理由でスクランブル/再調整されていることがわかります。PE ヘッダーは 8 バイト後ろに移動されています。セクション rdata と pdata がどこからともなく現れます。

ここで一体何が起こっているのでしょうか?

乾杯、ジャン

答え1

C:\Windows\regedit.exeは 64 ビット実行可能ファイルであるため、有効な 32 ビット ファイルではありません。32 ビット バージョンは ですC:\Windows\SysWow64\regedit.exe

デフォルトの場所からコピーした場合はどちらも実行されないことを確認できます。

Win7 は裏で魔法をかけています。32 ビット プロセスから regedit を実行すると、 から 32 ビット exe が取得されますC:\Windows\SysWow64。64 ビット プロセスから実行すると、C:\Windows にあるものが取得されます。したがって、32 ビット デバッガーがデバッグ中だと思っているとき、C:\Windows\regedit.exe実際には を取得していますC:\Windows\SysWow64\regedit.exe。regedit.exe を からコピーすると、C:\Windowsリダイレクトは発生せず、32 ビット デバッガーには 64 ビット exe が取得されます。そのため、明らかな変更が行われます。

答え2

をコピーするときは、サブフォルダー (例)にあるファイルregedit.exeもコピーする必要があります。そうしないと起動しません。.muiculturefr-FR\regedit.exe.mui

答え3

NT6 のツールのいくつかはこのように愚かで、MUI ファイル (おそらく en-us フォルダー内) がないと実行されません。

以前、regedit をハッキングして管理者権限なしで実行しようとしたのですが、ハッキングしたコピーを実行するのにかなり苦労しました。何をしなければならなかったのか、正確な詳細は覚えていません...

関連情報