今夜、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
もコピーする必要があります。そうしないと起動しません。.mui
culture
fr-FR\regedit.exe.mui
答え3
NT6 のツールのいくつかはこのように愚かで、MUI ファイル (おそらく en-us フォルダー内) がないと実行されません。
以前、regedit をハッキングして管理者権限なしで実行しようとしたのですが、ハッキングしたコピーを実行するのにかなり苦労しました。何をしなければならなかったのか、正確な詳細は覚えていません...