Как Process Explorer подменяет Task Manager.

March 13th, 2008

А знаете, как Process Explorer подменяет собой стандартный Task Manager?

Process Explorer: Replace Task Manager.

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

Process Explorer is set as a

Преимущества такого метода перехвата:

  1. Подмена происходит в недрах CreateProcess. Неважно кто и как запускает taskmgr.exe, всегда будет запущен Process Explorer;
  2. Не нужно возиться Windows File Protection (WPF), пытаясь подменить исполняемый файл Task Manager’а в %windir%\system32.

Недостатки:

  1. Подмена происходит вне зависимости от реального местонахождения taskmgr.exe. Это может быть и не Task Manager вовсе, просто имя совпало. Все равно вместо него будет запущен Process Explorer;
  2. Имя запускаемого файла “taskmgr.exe” передается в командную строку подменяющего процесса. Т.е. так просто напрямую заменить notepad.exe на другой редактор не получится.

Но вообще-то очень остроумно сделано.

, , , ,

  1. March 13th, 2008 at 23:08 | #1

    Man, you’re genious!
    Это же способ подменять что угодно в обход WPF! Можно наконец красиво избавиться от этого …ского notepad’a!

  2. March 14th, 2008 at 00:40 | #2

    Сколько интересного можно найти в гугле по “Image File Execution Options”… Спасибо :) .

  3. Oleg
    March 14th, 2008 at 01:04 | #3

    Очень интересно, спасибо что поделились :)

  4. VEKk
    March 14th, 2008 at 02:09 | #4

    спасибо, за наводку на эту фичу
    пользуюсь утилитами давно, но досконально их не изучал :( – про такую возможность даже не знал

  5. Андрей Гаевский
    March 14th, 2008 at 03:54 | #5

    Спасибо за очень интересный пост!

  6. Виталий Сергеев
    March 14th, 2008 at 22:09 | #6

    Подстановка исходного имени файла в командную строку – это скорее баг, чем фича, что Вы наглядно продемонстрировали на примере с notepad.
    А почему бы не использовать переменную окружения процесса для хранения имени исходного имени вызываемого файла?

  7. Alexey
    March 14th, 2008 at 23:23 | #7

    А почему баг то? И даже не фича это, а документированная возможность подключаться отладчиком при старте приложения.
    А то, что другим приложениям (блокнотам и прочим заменителям программ) “мешает” передача имени исходного файла в качестве параметра – это их проблема.

  8. AiR
    April 6th, 2009 at 03:13 | #9

    А это видно в “Autoruns” (от Sysinternals) на вкладке “Image Hijacks”

  1. March 13th, 2008 at 20:43 | #1
Comments are closed.