Not a kernel guy

… in the Windows kernel team

Thursday, March 13, 2008

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

А знаете, как 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 на другой редактор не получится.

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

Posted at 8:41 pm •

RSS feed | Trackback URI

9 Comments »

[...] from blog.not-a-kernel-guy.com. Filed under: Маленькие хитрости, Инструменты, Process Explorer, Task [...]

 
Comment by Bandana — March 13, 2008 @ 11:08 pm

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

 
Comment by BLiTZ — March 14, 2008 @ 12:40 am

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

 
Comment by Oleg — March 14, 2008 @ 1:04 am

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

 
Comment by VEKk — March 14, 2008 @ 2:09 am

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

 
Comment by Андрей Гаевский — March 14, 2008 @ 3:54 am

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

 
Comment by Виталий Сергеев — March 14, 2008 @ 10:09 pm

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

 
Comment by Alexey — March 14, 2008 @ 11:23 pm

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

Comment by Not a kernel guy — March 15, 2008 @ 8:39 pm

Угу. Именно так дело и обстоит.

 
 

Your Comment (smaller | larger)

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Powered by WordPress