Скрываем процесс в диспетчере задач 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, которой пользуется львиная доля всех пользователей, это тоже неплохо.
Надеюсь, мне удалось вас хоть немножечко заинтересовать данной темой.
До скорого! И да пребудет с вами сила анонимности…
Скрываем процесс своими руками.
Баги и читы Lineage 2

Автор темы не несёт ответственности. Всё делается на свой страх и риск!
Часто анонимность и скрытность играют ключевую роль в успешном выполнении каких-либо действий как в реальности, так и в виртуальности, в частности в операционных системах. В данной статье речь пойдет о том, как стать анонимным в OS 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 раз в секунду и будет служить для отслеживания обновления списка процессов в диспетчере и, следовательно, появления нашего скрываемого процесса. Также добавим на форму кнопку.
var
ind:integer;
h:Thandle;
last_c:integer;
procedure UpdateList();
var
th:THandle;
entry:PROCESSENTRY32;
b:boolean;
i,new_ind:integer;
plist:TStringList;
begin
// Список процессов
plist:=TStringList.Create;
// Формируем список процессов
th := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS,0);
entry.dwSize:=sizeof(PROCESSENTRY32);
b:=Process32First(th,entry);
while(b) do
begin
plist.Add(entry.szExeFile);
b:=Process32Next(th,entry);
end;
// Сортируем его, чтобы индексы элементов
// совпадали с теми, что в диспетчере задач
plist.Sort;
last_c:=plist.Count;
// Поиск индекса нашего процесса ‘explorer.exe’
for i:=1 to plist.Count-1 do
if(LowerCase(plist[i])=’explorer.exe’) then new_ind:=i-1;
// Удаление объекта из списка
if(new_ind<>ind) then ListView_DeleteItem(h,ind);
ind:=new_ind;
plist.Free;
// Запускаем таймер отслеживания обновлений в списке процессов
if(Form1.Timer2.Enabled=false) then Form1.Timer2.Enabled:=true;
procedure TForm1.HideProcessButton(Sender: TObject);
begin
// Ищем дочернее окно класса ‘SysListView32’
h:=FindWindow(nil,’Диспетчер задач Windows’);
h:=FindWindowEx(h,0,nil,’Процессы’);
h:=FindWindowEx(h,0,’SysListView32′,nil);
// Запускаем таймер переформирования списка процессов
Timer1.Enabled:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
UpdateList();
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
// Поиск изменений в списке
if(ListView_GetItemCount(h)>last_c) then
ListView_DeleteItem(h,ind);
last_c:=ListView_GetItemCount(h);
end;
Вот, собственно, и весь код.
Скроем, например, в Диспетчере задач процесс самого Диспетчера задач:
Вот он есть:
[ Ссылки могут видеть только зарегистрированные пользователи. ]
Все следы присутствия в системе стерты, а сам он спокойно выполняется в обычном режиме где-то в глубинах процессора
Что ж, думаю, такой способ заслуживает существовать, правда он требует небольших доработок. Да, конечно же с его помощью нельзя скрыть процесс от самой системы, но сокрытие в стандартной тулзе Windows, которой пользуется львиная доля всех пользователей, это тоже неплохо.
Надеюсь, мне удалось вас хоть немножечко заинтересовать данной темой.
Скрытие процесса в диспетчере задач или неубиваемый процесс Windows 10
Помощь в написании контрольных, курсовых и дипломных работ здесь.

Доброе время суток! Такой вопрос у меня. Как можно отследить процесс (по имени) в диспетчере задач.
Как скрыть свой процесс в диспетчере задач?
можна зробити веселий прікол uses ShellAPI; procedure TForm1.FormClose(Sender: TObject; var.
При закрытии формы не убивается процесс в диспетчере задач, а висит там
При нажатии на кнопку выполняется процедура buttonclick в которой написано close; программа.
Решение
Решение
Сохраняйте прогресс пройденного теста в файл, чтобы при открытии можно было продолжить с того места, где закрыли программу (если тест не окончил). Чтобы студент ее не закрыл сам, создайте флаг, который меняется после прохождения теста. А пока он не изменен :
Я, конечно, может чего-то не догоняю, это запросто, но кроме как в Паскале мне с этим заморачиваться не приходилось.
D1973, так это стандартное объявление типа и ссылки на тип. Во всём дельфи так, вроде. Не знаю, как в новых, но в D7 так.
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Вирус поменял ярлыки браузера, в диспетчере задач неубиваемый процесс с иероглифами
Доброго времени суток. Искал программу, скачав запустил ехе из архива. На рабочем столе стали.
Скрытие программы в диспетчере задач
Как сделать чтобы программа на VB6 не отображалась в диспетчере задач

я пишу троян (В СЛЕДОВАТЕЛЬСКИХ ЦЕЛЯХ И РАСПРОСТРАНЯТЬ НЕ СОБИРАЮСЬ. ) создаю прогу на mvc.
Скрыть процесс из диспетчера задач от пользователя
На хабре описывается метод скрытия процесса из диспетчера задач от глаз пользователя, вот ссылка на статью:
Хочу реализовать тоже самое на C#. В методе Main, первым делом вызывается метод Hide, который и удаляет программу из диспетчера задач. Помогите реализовать метод Hide.
Добавлено через 6 часов 57 минут
Вот еще более простой способ нашел на forum.oszone.net
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Скрыть процесс с диспетчера задач
Здравствуйте! Возможно ли скрыть процесс в диспетчере задач?
Скрыть программу из вкладки ‘приложения’ диспетчера задач
Всем доброго времени суток, есть интересный вопрос: как можно скрыть программу из вкладки.
Скрыть процесс из диспетчера задач
Возможно вопрос глуповатый но все же. Как программно скрыть программу в процессах? Но так что бы.
Скрыть процесс из диспетчера задач
Добрый день. Знаю,что вопрос уже не раз поднимался и обсуждался. Но облазив весь интернет,я так и.
Есть идеи как реализовать это на C#?
В идеале без сторонних компонентов.
Что касается прав, то все в порядке.
Добавлено через 25 минут
Вот еще один способ, расширенный вариант предыдущих:
http://www.csharpcoderr.com/20. nager.html
Правда при этом блокируется возможность обновления списка задач.
Решение
Добавлено через 4 минуты
Constantius24, Реализовывал скрытие процесса перехватывая NtQueryInformationProcess. Тестил от XP до 10’ки, на taskmgr’e, Process Explorer’e и ещё много на чем. Работало стабильно. Я к тому чтобы вы не парились, именно данный сервис перехватывайте. Скорей всего других вариантов нет список процессов получить.
jupman, нужно не забыть про NtQuerySystemInformation с
кодом SystemProcessInformation (получение списка процессов).
Убежденный, да действительно. Упустил. Спасибо.
Добавлено через 15 минут
Constantius24,Убежденный, тфу-ты, глянул код. Наоборот я как раз перехватывал NtQuerySystemInformation (SystemProcessesAndThreadsInformation) и все работало отлично. А упустил я NtQueryInformationProcess.
Убежденный, не все таки у меня надежный вариант. Зачем перехватывать NtQueryInformationProcess, это же запрос инфы о процессе. А без NtQuerySystemInformation (SystemProcessesAndThreadsInformation) у процесса списка не будет (если конечно нет ещё каких-то вариантов список получить).
Добавлено через 3 минуты
Constantius24, у меня на ассемблере код.
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Возможно ли скрыть процесс от Диспетчера задач?
Думаю, что в названии вопрос уже понятен. Перерыл кучу форумов, искал исходники, но ничего к.
Как скрыть процесс от диспетчера задач
Как скрыть процесс от диспетчера задач (чтобы ее не было в процессах).
Скрыть из приложений диспетчера задач
Всем привет! Суть вопроса такова: пишу программу на делфи, которая чистит реестр, проверяет его и.
Статья ASM для х86 (4.5.) Техники скрытия процессов
Win – это работающая по определённым правилам замкнутая система и если не придерживаться этих правил, её можно пустить по ложному следу. Тут главное не идти на поводу Microsoft, которая вправляет нам мозги своей/увесистой документацией. Сабж рассматривает несколько способов скрытия программ от системного «Диспетчера задач» как на пользовательском уровне, так и на уровне ядра.
При такой схеме, чтобы скрыть процесс находящийся по-середине, нужно подправить FLink левого процесса так, чтобы он указывал на структуру EPROCESS сразу правого процесса, минуя средний. В свою очередь BLink правого процесса требует правки на структуру сразу левого, в обход среднего. В результате – средний процесс станет невидимкой. Разберёмся с деталями подробней..
Теперь, если изменить данную схему как на рисунке ниже, мой красный процесс исчезнет из цепочки, хотя по-прежнему будет считаться активным, имея EPROCESS в системном пуле. То-есть мы копируем свой Flink в структуру предыдущего процесса, а Blink отправляем в следующий процесс:
4.5.1. Скрытие процессов на прикладном уровне
В своём младенчестве, эта недокументированная функция могла возвращать 150 типов информации о системе (т.н. класс), однако позже выяснилось, что большинство из них оказывают медвежью услугу, предоставляя хакерам широкий ассортимент. Так в последующих виндах классы урезали и на данный момент их осталось всего 54-штуки, хотя на сайте мелкософт указано итого меньше – 5 классов с пометкой, что остальные ушли в резерв для производственных нужд системы.


