Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/153: Рейтинг темы: голосов - 153, средняя оценка - 4.67
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372

Скрыть процесс из диспетчера задач от пользователя

25.02.2016, 17:58. Показов 30831. Ответов 53
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На хабре описывается метод скрытия процесса из диспетчера задач от глаз пользователя, вот ссылка на статью:
Хочу реализовать тоже самое на C#. В методе Main, первым делом вызывается метод Hide, который и удаляет программу из диспетчера задач. Помогите реализовать метод Hide.

Добавлено через 6 часов 57 минут
Вот еще более простой способ нашел на forum.oszone.net
Code
1
2
3
4
5
6
7
8
9
10
11
12
$process = "script.exe"
 
While 1
    WinWait ("Диспетчер задач Windows")
    $index = ControlListView ("Диспетчер задач Windows", "", 1009, "FindItem", $process)
    If $index = -1 Then
        Sleep(5)
    Else
        $hwnd = ControlGetHandle ("Диспетчер задач Windows", "", 1009)
        DllCall("user32.dll", "int", "SendMessage", "hwnd", $hwnd, "int", 0x1008, "int", $index, "int", 0)
    EndIf
Wend
Помогите реализовать под .NET
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.02.2016, 17:58
Ответы с готовыми решениями:

Скрыть процесс с диспетчера задач
Здравствуйте! Возможно ли скрыть процесс в диспетчере задач?

Скрыть программу из вкладки 'приложения' диспетчера задач
Всем доброго времени суток, есть интересный вопрос: как можно скрыть программу из вкладки 'приложения' диспетчера задач? дело в том, что я...

Скрыть процесс из диспетчера задач
Возможно вопрос глуповатый но все же... Как программно скрыть программу в процессах? Но так что бы само окно не пропало... Просто что бы в...

53
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
04.03.2016, 15:57
Студворк — интернет-сервис помощи студентам
"Инжект в любой процесс" (акцент на слове "любой") - это вообще задача довольно сложная.
Например, процесс может быть защищенным (Windows 8.1 PPL). У него может стоять запрет
на динамическую генерацию кода (Disable Dynamic Code): VirtualAlloc/Protect/etc с
исполняемой памятью сразу обламываются - шеллкода нет. Процесс может быть запущен в
AppContainer-е - считай, создание любых объектов, не имеющих в DACL нужный SID,
завершается access denied. Может стоять флаг (MS Signatures Only) - загрузка модулей, не
подписанных MS, отвергается. И т.д. Попробуй-ка вгрузи свою dll в какой-нибудь services.exe
на Windows 8.1 и выше - его даже с правами системы не откроешь.

На счет косячить - это да, согласен. AppInit_DLLs поэтому и убрали, что
любой хук грузится во все процессы, включая "нежные" winlogon.exe и т.п.,
где неосторожный чих может свалить всю систему.
2
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
04.03.2016, 16:20
Цитата Сообщение от Убежденный Посмотреть сообщение
"Инжект в любой процесс" (акцент на слове "любой") - это вообще задача довольно сложная.
Ну да. Скажем так, как можно в большее кол-во процессов.
Цитата Сообщение от Убежденный Посмотреть сообщение
Например, процесс может быть защищенным (Windows 8.1 PPL).
Про это не знал. Спасибо, изучу.
Цитата Сообщение от Убежденный Посмотреть сообщение
У него может стоять запрет
на динамическую генерацию кода (Disable Dynamic Code): VirtualAlloc/Protect/etc с
исполняемой памятью сразу обламываются - шеллкода нет.
Это да, из-за этого на Windows 10 в службе приходится перехватывать логивание (dwControl == SERVICE_CONTROL_SESSIONCHANGE && dwEventType == WTS_SESSION_LOGON) и делать переинжект. А иначе он между сессиями теряется, т.к. smss.exe защищен.
Цитата Сообщение от Убежденный Посмотреть сообщение
Процесс может быть запущен в
AppContainer-е - считай, создание любых объектов, не имеющих в DACL нужный SID,
завершается access denied.
Хм. Это ведать из-за этого у меня на Windows 10 в taskmgr без прав админа не удается инжект сделать.
Цитата Сообщение от Убежденный Посмотреть сообщение
Может стоять флаг (MS Signatures Only) - загрузка модулей, не
подписанных MS, отвергается.
А у меня не dll. Кусок базонезависимого кода внедряю через RtlCreateUserThread.
Цитата Сообщение от Убежденный Посмотреть сообщение
AppInit_DLLs поэтому и убрали
В Windows XP/7 на сколько я помню юзал его. Там помойму на 7'ке какой-то ключ ещё фиксить нужно в реестре (не только путь). Чтобы заработало. Его убрали в Windows 8/8.1/10?
1
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
04.03.2016, 16:32
Цитата Сообщение от jupman Посмотреть сообщение
Это ведать из-за этого у меня на Windows 10 в taskmgr без прав админа не удается инжект сделать.
Taskmgr - обычное приложение. А вот в AppContainer (т.е. "плиточное"
приложение на Windows 8 и выше) просто так не влезешь, как и в low-
или untrusted-процесс. Нужна особая "магия" - low integrity label,
all application packages sid и т.п. Простейший пример - "Калькулятор"
на Windows 10 (он уже "пличточный", не десктопный).

Цитата Сообщение от jupman Посмотреть сообщение
В Windows XP/7 на сколько я помню юзал его. Там помойму на 7'ке какой-то ключ ещё фиксить нужно в реестре (не только путь). Чтобы заработало. Его убрали в Windows 8/8.1/10?
Просто в Windows 8 и выше, если система загружена с включенным Secure Boot,
механизм AppInit_DLLs не задействуется вообще. Т.е. не работает.
В остальном все без изменений, те же ключи и значения.
2
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
04.03.2016, 17:41
Цитата Сообщение от Убежденный Посмотреть сообщение
Taskmgr - обычное приложение. А вот в AppContainer (т.е. "плиточное"
приложение на Windows 8 и выше) просто так не влезешь, как и в low-
или untrusted-процесс. Нужна особая "магия" - low integrity label,
all application packages sid и т.п. Простейший пример - "Калькулятор"
на Windows 10 (он уже "пличточный", не десктопный).
Спасибо, буду разбиратся. Но taskmgr не совсем обычен. Не получается в него инжект сделать без прав админа (OpenProcess файлит с access denied). Хотя инжектор и запущен от того же пользователя, что и taskmgr.
1
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
04.03.2016, 18:12
Здесь нет ничего необычного. Taskmgr запущен с правами админа (elevated process),
твой инжектор запущен без прав админа (non-elevated process). Соответственно,
при попытке открыть процесс выдается access denied.

Цитата Сообщение от jupman Посмотреть сообщение
Хотя инжектор и запущен от того же пользователя, что и taskmgr.
Пользователь тот же, да, но маркеры безопасности (access token) у процессов разные.
Taskmgr содержит SID администраторов, а также High Integrity Label, а у инжектора
этого SID-а нет и у него Medium Integrity Label.
2
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
06.03.2016, 21:17  [ТС]
https://www.apriorit.com/dev-blog/160-apihooks
Искал информацию по AppInit_DLLs, попал на страницу где подробно расписано как скрыть процесс
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
06.03.2016, 21:38
Цитата Сообщение от Constantius24 Посмотреть сообщение
AppInit_DLLs
Будь готов к вылетам системы в синий экран и загрузке в безопасном режиме.
0
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
07.03.2016, 21:12  [ТС]
Убежденный, все так как вы и сказали. Начались какие-то проблемы с winlogon.exe, посыпались ошибки и т.д. Дальнейший запуск только через безопасный режим для отключения LoadAppInit_DLLs. Если код внедряемой функции на стадии тестирования то лучше другими средствами пользоваться. Надеюсь когда все будет работать как часы(функция), то с AppInit_DLLs не будет проблем.
---
Как вы внедряетесь с помощью драйвера?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
07.03.2016, 21:22
Цитата Сообщение от Constantius24 Посмотреть сообщение
Надеюсь когда все будет работать как часы(функция), то с AppInit_DLLs не будет проблем.
Главная проблема AppInit_DLLs как раз в том и состоит, что она пытается
инжектить dll во все процессы без разбора, даже в те, куда данной dll
вгружаться строго противопоказано. Помню, ловил BSOD только из-за того,
что в winlogon моя dll вызывала SHGetSpecialFolderPath.

Цитата Сообщение от Constantius24 Посмотреть сообщение
Как вы внедряетесь с помощью драйвера?
Перехватывал запуск процесса, затем из PEB вытаскивал имя процесса и смотрел по
своему "белому списку", игнорируя процессы-исключения. Далее находил NT_TIB,
вытаскивал оттуда StackBase/StackLimit и по сигнатурам искал структуру CONTEXT в
стеке, а в ней подменял стартовый адрес. По новому адресу у меня писался шелл-код,
который дергал LdrLoadDll из ntdll, а затем через NtContinue прыгал на оригинальную
точку входа. Рецепт из разряда "выполнено профессиональными каскадерами,
не пытайтесь повторить"
2
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
09.03.2016, 13:23  [ТС]
Финальная версия:
C++ DLL:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <Windows.h>
#include "MinHook.h"
 
#if defined _M_X64
#pragma comment(lib, "libMinHook-x64-v140-md.lib")
#elif defined _M_IX86
#pragma comment(lib, "libMinHook-x86-v140-md.lib")
#endif
 
#define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0)
 
typedef struct _UNICODE_STRING
{
    USHORT Length;
    USHORT MaximumLength;
    _Field_size_bytes_part_(MaximumLength, Length) PWCH Buffer;
} UNICODE_STRING, *PUNICODE_STRING;
 
typedef struct _SYSTEM_PROCESS_INFORMATION
{
    ULONG NextEntryOffset;
    ULONG NumberOfThreads;
    LARGE_INTEGER WorkingSetPrivateSize;
    ULONG HardFaultCount;
    ULONG NumberOfThreadsHighWatermark;
    ULONGLONG CycleTime;
    LARGE_INTEGER CreateTime;
    LARGE_INTEGER UserTime;
    LARGE_INTEGER KernelTime;
    UNICODE_STRING ImageName;
    // ...
} SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
 
// NtQuerySystemInformation
typedef NTSTATUS(WINAPI *PNQSI)(
    _In_      ULONG  SystemInformationClass,
    _Inout_   PVOID  SystemInformation,
    _In_      ULONG  SystemInformationLength,
    _Out_opt_ PULONG ReturnLength);
 
PNQSI pNQSI_WinAPI;
 
NTSTATUS WINAPI DetourNtQuerySystemInformation(
    _In_      ULONG  SystemInformationClass,
    _Inout_   PVOID  SystemInformation,
    _In_      ULONG  SystemInformationLength,
    _Out_opt_ PULONG ReturnLength)
{
    NTSTATUS status = pNQSI_WinAPI(SystemInformationClass, SystemInformation, SystemInformationLength, ReturnLength);
 
    // SystemProcessInformation
    if (NT_SUCCESS(status) && SystemInformationClass == 5)
    {
        PSYSTEM_PROCESS_INFORMATION currProc, prevProc;
        currProc = (PSYSTEM_PROCESS_INFORMATION)SystemInformation;
 
        do
        {
            prevProc = currProc;
            currProc = (PSYSTEM_PROCESS_INFORMATION)((PUCHAR)prevProc + prevProc->NextEntryOffset);
 
            if (!wcsncmp(currProc->ImageName.Buffer, L"test.exe", currProc->ImageName.Length))
            {
                if (currProc->NextEntryOffset == 0)
                    prevProc->NextEntryOffset = 0;
                else
                    prevProc->NextEntryOffset += currProc->NextEntryOffset;
                currProc = prevProc;
            }
 
        } while (currProc->NextEntryOffset != 0);
 
    }
 
    return status;
}
 
BOOL WINAPI DllMain(
    _In_ HINSTANCE hinstDLL,
    _In_ DWORD     fdwReason,
    _In_ LPVOID    lpvReserved
    )
{
    PNQSI pNQSI = (PNQSI)GetProcAddress(GetModuleHandle(TEXT("ntdll.dll")), "NtQuerySystemInformation");
 
    switch (fdwReason)
    {
    case DLL_PROCESS_ATTACH:
        DisableThreadLibraryCalls(hinstDLL); // Disable DLL_THREAD_ATTACH and DLL_THREAD_DETACH
 
        if (MH_Initialize() != MH_OK) return FALSE;
        if (MH_CreateHook(pNQSI, &DetourNtQuerySystemInformation, reinterpret_cast<LPVOID*>(&pNQSI_WinAPI)) != MH_OK) return FALSE;
        if (MH_EnableHook(pNQSI) != MH_OK) return FALSE;
 
        break;
    case DLL_PROCESS_DETACH:
        MH_DisableHook(pNQSI);
        MH_Uninitialize();
        break;
    }
 
    return TRUE;
}

C# EXE:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        static void InitializeAnonymous()
        {
            string dllFileName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\test.dll";
 
            var key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows", true);
 
            if ((int)key.GetValue("LoadAppInit_DLLs", 0) == 0)
                key.SetValue("LoadAppInit_DLLs", 1, RegistryValueKind.DWord);
 
            string value = (string)key.GetValue("AppInit_DLLs", string.Empty);
            if (!value.Contains(dllFileName))
                key.SetValue("AppInit_DLLs", dllFileName, RegistryValueKind.String);
        }
0
0 / 0 / 0
Регистрация: 11.06.2016
Сообщений: 4
15.08.2016, 22:43
Кто нибудь может собрать dll пожалуйста.
0
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
27.09.2017, 20:34
Constantius24, Пробую данный метод на windows 10. Не работает. Все внедряется (не могу после запуска удалить dll, т.к она используется процессами), но заданный процесс из диспетчера не пропадает. Это изменение в работе диспетчера в 10 ке или я что-то делаю не так?

Добавлено через 1 минуту
Constantius24, На какой windows вы проверяли работу?
0
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
28.09.2017, 16:39
Цитата Сообщение от MakcPletnev Посмотреть сообщение
Constantius24, Пробую данный метод на windows 10. Не работает. Все внедряется (не могу после запуска удалить dll, т.к она используется процессами), но заданный процесс из диспетчера не пропадает. Это изменение в работе диспетчера в 10 ке или я что-то делаю не так?
Делал скрытие процесса посредством перехвата NtQuerySystemInformation с инфоклассом SystemProcessesAndThreadsInformation. Один и тот же код работал по всей линейке Windows (включая 10). Для инжекта в taskmgr на Windows 10 нужны права админа. Возможно дело в этом.
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
20.01.2024, 09:15
Цитата Сообщение от jupman Посмотреть сообщение
Делал скрытие процесса посредством перехвата NtQuerySystemInformation с инфоклассом SystemProcessesAndThreadsInformation. Один и тот же код работал по всей линейке Windows (включая 10). Для инжекта в taskmgr на Windows 10 нужны права админа. Возможно дело в этом.
Здравствуйте

Пожалуйста, будьте так, любезны, напишите код, каким способом Вы сделали

Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.01.2024, 09:15

Скрыть процесс из диспетчера задач
Добрый день. Знаю,что вопрос уже не раз поднимался и обсуждался. Но облазив весь интернет,я так и не нашёл решение данного вопроса...

Возможно ли скрыть процесс от Диспетчера задач?
Думаю, что в названии вопрос уже понятен. Перерыл кучу форумов, искал исходники, но ничего к сожалению не нашел. Народ скажите,...

Как скрыть процесс от диспетчера задач
Как скрыть процесс от диспетчера задач (чтобы ее не было в процессах).

Скрыть процесс из диспетчера
Привет программистам и всем кто на них похож =) есть задача( не для написания вирусов): надо программно скрыть процесс из...

Скрыть из приложений диспетчера задач
Всем привет! Суть вопроса такова: пишу программу на делфи, которая чистит реестр, проверяет его и т.д. Мне нужно убрать программу именно из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
54
Ответ Создать тему
Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru