c:\windows\regedit.exe 複製失敗

c:\windows\regedit.exe 複製失敗

今晚我在win7(64位專業版)上遇到了一個奇怪的現象。當我將 regedit.exe 複製到例如 c:\ 時,我無法再執行它。它根本就不再開始了。當我嘗試使用 olly db 來調試它時,olly 說它不再是有效的 32 位元 pe 檔案。仔細觀察發現該文件以某種方式被打亂/重新對齊。 PE 標頭向後移動 8 個位元組。 rdata 和 pdata 部分不知從何而來。

這裡到底發生了什麼事?

乾杯,簡

答案1

它不是有效的 32 位元文件,因為C:\Windows\regedit.exe它是 64 位元可執行檔。 32 位元版本是C:\Windows\SysWow64\regedit.exe.

我可以確認,如果從預設位置複製,則兩者都不會運行。

Win7 在幕後發揮了一些魔力。如果您從 32 位元進程運行 regedit,那麼您將從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 以管理員身份運行非提升權限,我必須一路戰鬥才能讓被破解的副本運行,但我不記得我必須做什麼的確切細節......

相關內容