1

Сегодня вечером я столкнулся со странным явлением на win7 (64bit pro). Когда я копирую regedit.exe, например, в c:\, я больше не могу его запустить. Это просто больше не начинается. Когда я пытаюсь отладить его, используя только db, olly говорит, что он больше не является допустимым 32-битным pe-файлом. При ближайшем рассмотрении выясняется, что файл каким-то образом зашифрован / перестроен. Заголовок PE перемещается на 8 байтов назад. Разделы rdata и pdata появляются из ниоткуда.

Что здесь происходит?

Ура, янв

3 ответа3

5

Это недопустимый 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 - отсюда и очевидное изменение.

0

При копировании файла regedit.exe необходимо скопировать его файл .mui расположенный в подпапке culture (например, fr-FR\regedit.exe.mui), иначе он не запустится.

0

Некоторые из инструментов на NT6 такие глупые, они не будут работать без файлов MUI (вероятно, в папке en-us).

Однажды я взломал regedit для запуска без повышенных прав как администратор, и мне пришлось бороться с этим до конца, чтобы запустить эту взломанную копию, и я не помню точных деталей того, что я должен был сделать ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .