c:\windows\regedit.exe копирование не удается

c:\windows\regedit.exe копирование не удается

Сегодня вечером я столкнулся со странным явлением на win7 (64bit pro). Когда я копирую 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 творит магию под капотом. Если вы запускаете regedit из 32-битного процесса, то вы получите 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, чтобы запустить его без повышенных прав администратора, и мне пришлось долго бороться, чтобы запустить эту взломанную копию, и я не помню точных подробностей того, что мне пришлось сделать...

Связанный контент