Как Process Explorer подменяет Task Manager.
March 13th, 2008
А знаете, как Process Explorer подменяет собой стандартный Task Manager?

Оказывается всё очень просто и банально. Он устанавливает себя в качестве отладчика для taskmgr.exe!

Преимущества такого метода перехвата:
- Подмена происходит в недрах CreateProcess. Неважно кто и как запускает taskmgr.exe, всегда будет запущен Process Explorer;
- Не нужно возиться Windows File Protection (WPF), пытаясь подменить исполняемый файл Task Manager’а в %windir%\system32.
Недостатки:
- Подмена происходит вне зависимости от реального местонахождения taskmgr.exe. Это может быть и не Task Manager вовсе, просто имя совпало. Все равно вместо него будет запущен Process Explorer;
- Имя запускаемого файла “taskmgr.exe” передается в командную строку подменяющего процесса. Т.е. так просто напрямую заменить notepad.exe на другой редактор не получится.

Но вообще-то очень остроумно сделано.
Man, you’re genious!
Это же способ подменять что угодно в обход WPF! Можно наконец красиво избавиться от этого …ского notepad’a!
Сколько интересного можно найти в гугле по “Image File Execution Options”… Спасибо
.
Очень интересно, спасибо что поделились
спасибо, за наводку на эту фичу
– про такую возможность даже не знал
пользуюсь утилитами давно, но досконально их не изучал
Спасибо за очень интересный пост!
Подстановка исходного имени файла в командную строку – это скорее баг, чем фича, что Вы наглядно продемонстрировали на примере с notepad.
А почему бы не использовать переменную окружения процесса для хранения имени исходного имени вызываемого файла?
А почему баг то? И даже не фича это, а документированная возможность подключаться отладчиком при старте приложения.
А то, что другим приложениям (блокнотам и прочим заменителям программ) “мешает” передача имени исходного файла в качестве параметра – это их проблема.
Угу. Именно так дело и обстоит.
А это видно в “Autoruns” (от Sysinternals) на вкладке “Image Hijacks”