c:\windows\regedit.exe 复制失败

c:\windows\regedit.exe 复制失败

今晚我在 win7(64 位专业版)上遇到了一个奇怪的现象。当我将 regedit.exe 复制到例如 c:\ 时,我再也无法运行它。它根本无法启动。当我尝试使用 olly db 对其进行调试时,olly 说它不再是有效的 32 位 pe 文件。仔细查看后发现该文件以某种方式被打乱/重新对齐。PE-Header 向后移动了 8 个字节。rdata 和 pdata 部分不知从何而来。

这里到底发生了什么黑客事件?

欢呼吧,Jan

答案1

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

我可以确认,如果将其从默认位置复制出来,它们都无法运行。

Win7 在幕后施展了一些魔法。如果您从 32 位进程运行 regedit,那么您将从 获得 32 位 exe C:\Windows\SysWow64。如果您从 64 位进程运行,那么您将获得 C:\Windows 中的 exe。因此,当您的 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,让它以非管理员身份运行,我不得不一路奋战才能让破解后的副本运行,我不记得我必须做的具体细节了……

相关内容