Как проверить список запущенных процессов в Windows?
В статье описывается несколько способов, которые помогут отобразить список запущенных процессов в Windows. Операции производятся в Windows 10, но что-то сработает и в более ранних версиях.
Согласитесь, задача отобразить список запущенных процессов далеко не самая сложная. Однако подходы к её решению не обязательно должны быть стандартными. Информацию по процессам можно представить и в более комфортном виде, чем, например, через…
Диспетчер задач
Чаще всего, кроме этого способа, пользователям больше ничего и не известно. Но, раз уж это так, значит, этого большинству из нас достаточно. Вызывается оный во всех последних версиях Windows просто – достаточно зажать три клавиши быстрого доступа:
Ctrl + Shift + Esc
Вкладка с процессами не изменилась со времён Windows XP:
Однако, если вы на К76, вам Диспетчера мало. Согласен, продолжаем.
Список запущенных процессов из командной строки
В Windows есть встроенная командная утилита tasklist, отображающая список запущенных процессов на указанном компьютере. Как и многие другие в папке System32, tasklist принадлежит к числу административных утилит, которые могут смотреть запущенные процессы на удалённых машинах по сети. Для локального компьютера команда в консоли, запущенной от имени администратора, может, например, принять такой вид:
После этого на Рабочем столе появится текстовый файл:
в котором запущенные на момент исполнения команды будут представлены в удобочитаемом виде. Текстовый вывод не понимает кириллицы, так что я обычно использую специальные текстовые редакторы типа Notepad ++. Но, думаю, что в файле написано, понятно и так:
Или процессы можно представить в табличном формате; если есть Excel, можете просматривать процессы оттуда:
Для удалённого компьютера команда примет вид:
На этом можно было бы и закончить, но я продолжу аналогичным вариантом, откуда вы узнаете…
Как узнать список запущенных процессов из Power Shell
Информация из файла, получаемого аналогичным путём, будет немного более информативнее. Этот вариант доступен владельцам копий Windows 7/10, и командлет на отображение списка на том же Рабочем столе будет таким:
для локальной копии Windows:
- Handles – число потоков, которые процесс открыл для себя.
- NPM(K) – размер невыгружаемого пула памяти, использующегося процессом, в килобайтах.
- PM(K) – размер выгружаемого пула памяти, использующегося процессом, в килобайтах.
- WS(K) – размер рабочего набора процесса, в килобайтах. Он состоит из страниц памяти, к которым процесс обращался в текущем сеансе.
- VM(M) – объём оперативной памяти, занимаемой процессом, в мегабайтах (в том числе в pafefile).
- CPU(s) – время в секундах, затрачиваемое всеми камнями процессора.
- ID – PID указанного процесса.
- ProcessName – Имя процесса.
Скрываем процесс в диспетчере задач Windows
Intro
Часто анонимность и скрытность играют ключевую роль в успешном выполнении каких-либо действий как в реальности, так и в виртуальности, в частности в операционных системах. В данной статье речь пойдет о том, как стать анонимным в OS Windows. Вся информация предоставлена лишь для цели ознакомления.
Итак, мы попробуем скрыться от глаз пользователя в диспетчере задач Windows. Способ, с помощью которого мы будем этого добиваться является чрезвычайно простым по отношению к тем, которые основаны на перехвате ядерных( часто недокументированных ) функций и на создании собственных драйверов.
Суть метода: поиск окна Диспетчера Задач -> поиск в нем дочернего окна( списка ), содержащего имена всех процессов -> удаление из списка нашего процесса.
Как видно, что с нашим процессом никаких манипуляций производиться не будет: он как работал, так и будет себе работать. Так как стандартный рядовой пользователь Windows, как правило, не использует никаких других тулз для просмотра запущенных процессов на его компьютере, то это лишь сыграет нам «на руку». Процесс в большинстве случаев обнаружен не будет.
Что использовалось для исследования:
1) Spy++ от Microsoft ( для изучения иерархии дочерних окон Диспетчера задач )
2) OllyDBG для просмотра функций, используемых диспетчером для получения снэпшота процессов.
3) Собственно, сам taskmng.exe( Диспетчер задач )
Для написания кода будем использовать среду Delphi. Скорее, Delphi будет удобнее в нашем случае, нежели C++. Но это лишь мое скромное мнение.
Что ж, первым делом попытаемся выяснить, что из себя представляет список процессов и как он работает. С полувзора понятно, что это обычное окно класса «SysListView32»( список ), которое обновляется с частотой 2 кадра в секунду( раз в 0.5 секунд ). Смотрим иерархию окон:
Как видим, список процессов, в самом деле, есть обычное окно класса «SysListView32», которое является дочерним по отношению к окну(вкладке) «Процессы», которое также является дочерним по отношению к главному окну Диспетчера задач. Имеем лишь двойной уровень вложенности. Кроме того у списка имеется одно дочернее окно класса «SysHeader32», которое, как не трудно догадаться является заголовком( маркером полей ) для списка процессов.
Так как перед нами обычный список, то в нашем распоряжении целый набор макрокоманд для управления его содержимым. Их разнообразие, на первый взгляд, восхищает. Но многие из них работают лишь из родительского процесса, т.е чтобы их нам использовать, необходимо будет сымитировать, будто они выполняются в родительском процессе. Но таковым свойством обладают не все, в частности, макрокоманда ListView_DeleteItem, которая удаляет элемент из окна-списка( класс «SysListView32» ).
Её мы и будем использовать в процессе нашего приложения. Данная функция вторым параметром получает индекс удаляемого элемента.
Теперь нам надо как-то выяснить, каким же индексом обладает элемент с лэйблом скрываемого процесса в диспетчере задач. Для этого нам нужно как-то вытащить из списка процессов в диспетчере задач все элементы( лэйблы с именами процессов ) и последовательно их сравнивать с именем того процесса, который мы желаем скрыть.
Используя макрокоманды типа ListView_GetItemText наши действия были бы примерно следующими:
1) Выделение участка памяти в процессе диспетчера задач ( VirtualAllocEx )
2) Посылка дочернему окну-списку Диспетчера задач сообщения LVM_GETITEMTEXT ( SendMessage )
3) Запись в выделенную область памяти Диспетчера задач информации об элементе списка ( WriteProcessMemory )
4) Чтение из памяти диспетчера той информации, которая нас интересует о процессе ( ReadProcessMemory )
Используя этот способ можно легко «выстрелить себе в ногу», считая байты смещения от начала различных используемых в коде структур. Так же этот способ будет достаточно тяжел для тех, кто не особо углублен в WinAPI, так что его мы сразу уберем в сторонку. В прочем, найти реализацию данного способа на просторах интернета не составит особого труда. Вместо этого, я предложу вам сформировать свой список процессов, и уже ориентируясь в нем, искать заветный индекс процесса в списке процессов Диспетчера задач.
В Microsoft решили особо не парится по поводу тулзы, именуемой «Диспетчер Задач», и использовали обычные функции WinAPI для получения всех процессов в системе. Поверхностно смотрим taskmng.exe под отладчиком:
Видим использование WinAPI функции CreateToolHelp32SnapShot.
Всем известно, что ‘эту функцию можно использовать не только для получения снэпшота процессов, но и потоков процесса или модулей, например. Но в данном случае это маловероятно. Вряд ли здесь будут использовать что- то в роде енумератора процессов ( EnumProcesses ).
Мы остановились на том, что хотим сформировать свой список процессов и искать наш процесс в нем. Для этого воспользуемся той функцией, что обнаружили в отладчике. Если откроем диспетчер задач на вкладке «Процессы», то заметим, что все процессы отсортированы по алфавиту для удобства поиска. Следовательно, нам нужно получить список имен всех процессов в системе и отсортировать их по возрастанию в алфавитном порядке. Приступим к написанию кода в Delphi.
Для начала создадим демонстрационное оконное приложение с двумя таймерами: первый будет переформировывать список с процессами с той же частотой, с которой это делает Диспетчер задач Windows( раз в две секунды ); второй будет срабатывать 1000 раз в секунду и будет служить для отслеживания обновления списка процессов в диспетчере и, следовательно, появления нашего скрываемого процесса. Также добавим на форму кнопку.
Вот, собственно, и весь код.
Скроем, например, в Диспетчере задач процесс самого Диспетчера задач:
И по нажатию на кнопку «Скрыть процесс» процесс исчезает из списка:
Все следы присутствия в системе стерты, а сам он спокойно выполняется в обычном режиме где-то в глубинах процессора:)
Outro
Что ж, думаю, такой способ заслуживает существовать, правда он требует небольших доработок. Да, конечно же с его помощью нельзя скрыть процесс от самой системы, но сокрытие в стандартной тулзе Windows, которой пользуется львиная доля всех пользователей, это тоже неплохо.
Надеюсь, мне удалось вас хоть немножечко заинтересовать данной темой.
До скорого! И да пребудет с вами сила анонимности…
Как обнаружить скрытые вредоносные процессы в системе?
Для начала нужно научиться обнаруживать стандартные процессы — знать что из них что делает, к чему относится, как себя ведет и как должен запускаться.
После этого уже можно искать нестандартные процессы.
Способы конечно есть, но объяснять их — значит научить человека администрированию windows на достаточно глубоком уровне. Это нельзя вместить в ответ на вопрос, а грубо говоря целый процесс обучения.
Проверяйте каждый процесс
1) Подпись
Нет подписи у экзешника это уже не профессиональное ПО.
2) Место запуска
Если запущено не из програм файлс, то повод задуматься. Иногда ставится скайп или дропбокс в профиль пользователя. Но нормальное ПО. Стоит только в програм файлз, а не темповских папках с замудреными именами
Инструмент AVZ, AnvirrTaskManager
шерстите автозагрузку, плагины браузеров, планировщик задач.
Сначала надо прибить все не системные / неизвестные процессы.
У системных посмотреть используемые библиотеки (эти тулзы показывают)
Есть простенькие программы типа Process Hacker, у него свой драйвер и он увидит скрытый процесс, но вы увидите ещё столько интересного, что без точного знания каждой строчки можете сделать ещё хуже.
Антивирусы тоже видят скрытые процессы и обычно реагируют на них негативно, так что сейчас чаще используют легальные проги нежели сокрытие процесса, либо внедрение в легальный процесс, что в разы безопасней.
Помню как три дня гонялся за полиморфным драйвером алкоголя. Когда поймал понял, для чего разрабы это сделали, много думал.