! c 2013 .

Убийство процесса по имени

13 2012

Сегодня будем грамотно убивать процесс зная его имя. 

Наш киллер справится с любыми процессами, даже с теми, что неподвластны Windows Task Manager

PROCESSENTRY32 structure - Описывает структуру списка процессов, находящихся в адресном пространстве системы в момент снимка.

MSDN утверждает, что объекты такой структуры необходимо инициализировать размером самой структуры.

Спорить не будем.

CreateToolhelp32Snapshot - Возвращает моментальный снимок данных текущих модулей, процессов, потоков и принадлежащих им куч памяти

lstrcmpi - посимвольно сравнивает 2 строки, пока не будет обнаружено неравенство, либо концевой нулевой символ "\0"

Результат:
меньше нуля: str1 < str2
ноль: str1 = str2
больше нуля: str1 > str2

Process32First - Извлекает информацию о первом процессе снимка, полученного посредством CreateToolhelp32Snapshot

Process32Next - Соответственно извлекает информацию о следующем процессе

OpenProcess - открывает существующий объект процесса, устанавливая указанный уровень доступа.

TerminateProcess - завершает работу заданного процесса и всех его потоков.

Переходим к практике!

Алгоритм убийства следующий:

1) Получить информацию о всех текущих процессах
2) Поочередно сравнивая все имена процессов с нашим, найти его идетификатор
3) Открыть процесс с максимально возможными правами
4) Критическое завершение процесса с флагом 0xDEAD

Приступим!

Пишем фукнцию GetPIDByName:

Получать идентификатор процесса умеем, ну что, учимся убивать?

Ну и сам вызов:

Ладно, хватит мучать мою систему, я уже все, что можно убил :D