Переопределение определенного exe с другим в Windows

270
Jeysym

Я работаю на машине с Windows 7. Недавно я нашел приложение, которое сделало это:

У меня была a.exeдо установки. Приложение устанавливается b.exeна мой компьютер. Также он настраивает все так, что каждый раз, когда я выполняю a.exe, b.exeвместо него выполняется. Также я уверен, что я выполняю именно a.exeтогда, когда это произойдет. Более того, переименование любого допустимого exe- файла в любом месте a.exeи его выполнение приведет к выполнению b.exe. Для недействительных exe- файлов (например, текстовых файлов) эта процедура приведет к ошибке.

У меня вопрос, как это можно сделать? И это не очень большой риск безопасности? Также я работаю под управлением Windows 7.

3
Когда вы переименовываете exe в `a.exe`, меняется ли содержимое этого exe-файла? SpiderPig 6 лет назад 1
Если вы посмотрите в: HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6432Node \ Microsoft \ Windows NT \ CurrentVersion \ Параметры выполнения файла изображения \ и HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Параметры выполнения файла изображения, есть ли ключ для a.exe? Если да, есть ли значение отладчика? HelpingHand 6 лет назад 2
@SpiderPig Нет, файл остается неизменным все время. Jeysym 6 лет назад 0
@HelpingHand На самом деле да. В `HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Опции выполнения файла образа \ a.exe` есть строковый ключ ** Debugger **, который содержит путь к` b.exe`. Это оно. Благодарю. Jeysym 6 лет назад 0

1 ответ на вопрос

1
Twisty Impersonator

Ваш исполняемый файл захвачен "Вариантами исполнения файла изображения"

Параметры выполнения файла изображения - это функция Windows, которая позволяет принудительно запустить другую программу вместо фактического исполняемого файла, запущенного пользователем. Это полезно, например, если вы хотите запустить командный файл до запуска программы, независимо от того, как эта программа выполняется. Но это может вызвать проблемы, когда вы не знаете, что эта функция используется, поскольку Windows не объясняет, почему b.exeзапускается, когда она a.exeбыла выполнена.

К счастью, управлять этой функцией не сложно. Вы найдете все программы "перехватывает" в реестре здесь:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options 

Дочерние ключи названы по имени исполняемого файла, который будет перенаправлен при запуске. Здесь много ключей по умолчанию, которые следует оставить в покое. Просто найдите ключ, соответствующий имени вашего исполняемого файла, a.exeа затем подтвердите, что ключ содержит значение с именем Debugger. Это значение указывает b.exeисполняемый файл, который будет запущен вместо a.exe.

Чтобы остановить нежелательное поведение, удалите значение отладчика или весь ключ a.exe.