Masz Problem Z Ukryciem Procesu Brokera Zadań C # .net
December 29, 2021Jeśli pojawia się błąd podczas ukrywania procesu w Menedżerze zadań C# .net, dzisiejszy podręcznik użytkownika komputera może ci pomóc.
Zalecane: Fortect
Zalecane: Fortect
Czy masz dość powolnego działania komputera? Czy jest pełen wirusów i złośliwego oprogramowania? Nie obawiaj się, przyjacielu, ponieważ Fortect jest tutaj, aby uratować sytuację! To potężne narzędzie jest przeznaczone do diagnozowania i naprawiania wszelkiego rodzaju problemów z systemem Windows, jednocześnie zwiększając wydajność, optymalizując pamięć i utrzymując komputer jak nowy. Więc nie czekaj dłużej — pobierz Fortect już dziś!
Dowiedziałem się o odpowiedzi @ Chrisa Smitha i zdecydowałem się przekonwertować ją na numer C.
Administratorzy mogą nadal technicznie pozbyć się procesu, przejmując własność procesu i dodatkowo resetując DACL, ale nie ma żadnego interfejsu, który pomoże ci zrobić prawie wszystko w wyniku, w tym Menedżera zadań. Jednak Process Explorer może teraz mieć interfejs.
Oto kod uzyskany z właściwego dla łatwości użycia:
Numer C Winform Opcja:
użycie aranżacji; z System.Collections.Generic; z systemem. Model komponentu; z mechanizmem. Dane; Korzystanie z systemu.Rysunek; Korzystanie z System.Linq; Wybór System.Runtime.InteropServices; Korzystanie z System.Security.AccessControl; System wykorzystujący.Bezpieczeństwo.Principal; Korzystanie z System.Text; Korzystanie z System.Threading.Tasks; Kup System.Windows.Forms;Ukryj przestrzeń nazw 2 Podklasa klienta Form1: Form [DllImport ("advapi32.dll", SetLastError = prawda)] lazy extern bool GetKernelObjectSecurity (IntPtr Handle, int securityInformation, [Out] byte [] pSecurityDescriptor, uint nLength, wysłane przez uint lpnLengthNeeded); staromodny publiczny RawSecurityDescriptor GetProcessSecurityDescriptor (IntPtr processHandle) [DllImport ("advapi32.dll", SetLastError True)] = static extern bool SetKernelObjectSecurity (deskryptor IntPtr, int securityInformation, [In] byte [] pSecurityDescriptor); [DllImport ("kernel32.dll")] interwencja publiczna strony trzeciej IntPtr GetCurrentProcess (); [Flagi] Istotny proces wyliczania = process_create_process 0x0080, // Wymagane do utworzenia kompletnego procesu. PROCESS_CREATE_THREAD równa się 0x0002, // Wymagane do podania aktualnego przepływu. PROCESS_DUP_HANDLE to 0x0040, // Aby zduplikować funkcjonalny proces za pomocą DuplicateHandle. PROCESS_QUERY_INFORMATION 0x0400 oznacza // Wymagane do wywołania określonych informacji o procesie, takich jak znak, kod Salir i pole priorytetu (zobacz OpenProcessToken, GetExitCodeProcess, GetPriorityClass i IsProcessInJob). PROCESS_QUERY_LIMITED_INFORMATION odpowiada 0x1000, // Wymagane do wybrania informacji o operacjach do pobrania (zobacz QueryFullProcessImageName). Uchwyt, który ma własne prawo łatwego dostępu PROCESS_QUERY_INFORMATION, jest automatycznie przypisywany PROCESS_QUERY_LIMITED_INFORMATION. Windows Server 2003 Windows i XP / 2000: To prawo dostępu zwykle nie jest obsługiwane. PROCESS_SET_INFORMATION implikuje 0x0200, // Wymagane do ustawienia informacji o procesie, dla Instancji, jego klasie priorytetu (zobacz SetPriorityClass). PROCESS_SET_QUOTA sposób 0x0100, // wymagane do ustawienia limitów przechowywania przy użyciu SetProcessWorkingSetSize. PROCESS_SUSPEND_RESUME oznacza 0x0800, // zmuszony do zatrzymania odpowiedniego procesu przywracania. PROCESS_TERMINATE = 0x0001, // Wymagane, aby zakończyć proces przy użyciu TerminateProcess. PROCESS_VM_OPERATION oznacza 0x0008, // Wymagane do wykonania zabiegu przez otwarcie adresu podejścia (zobacz VirtualProtectEx i WriteProcessMemory). PROCESS_VM_READ wynosi 0x0010, // Wymagane do obsługi odczytu ze wspomnień w streszczeniu przy użyciu ReadProcessMemory. PROCESS_VM_WRITE jest równe 0x0020, // Wymagane do zapisu do pamięci podczas procesu z WriteProcessMemory. DELETE oznacza 0x00010000, // wymagane do usunięcia typu obiektu. równa się read_control 0x00020000, // Wymagane, aby odczytać informacje z deskryptora kontrolnego obiektu, nie zagrażając informacjom w SACL. Aby czytać lub pisać You-Sacl, musisz poprosić o prawo dostępu ACCESS_SYSTEM_SECURITY. Aby uzyskać więcej informacji, zobacz Prawa dostępu SACL. SYNCHRONIZE = 0x0010000, // Prawo do korzystania z obiektu do synchronizacji. Oznacza to, że tylko jeden wątek bez wysiłku czeka na zakończenie towaru w zgłoszonym stanie. WRITE_DAC odpowiada za pomoc 0x00040000, // wymagane do zarządzania w dacl z poprawnym deskryptorem dla obiektu. WRITE_OWNER = 0x00080000, // Musisz poprawić właściciela wokół deskryptora zegara domowego dla obiektu. STANDARDOWE_PRAWA_WYMAGANE = 0x000f0000, PROCESS_ALL_ACCESS sugeruje (STANDARD_RIGHTS_REQUIRED Public static void SetProcessSecurityDescriptor (IntPtr processHandle, RawSecurityDescriptor dacl) const DACL_SECURITY_INFORMATION liczba całkowita slo = 0x00000004; byte [] rawsd oznacza interesujący bajt [dacl.BinaryLength]; dacl.GetBinaryForm (rawsd, 0); w przypadku (! SetKernelObjectSecurity (processHandle, DACL_SECURITY_INFORMATION, rawsd)) wyrzuć nowy wyjątek Win32Exception (); formularz społeczności1 () Zainicjuj komponent (); // Pobierz uchwyt ostatnio dostępnego procesu IntPtr hProcess jest odpowiednikiem getcurrentprocess (); // Przeczytaj DACL var dacl oznacza GetProcessSecurityDescriptor (hProcess); // Wstaw nowy ACE dacl.DiscretionaryAcl.InsertAce ( 0, nowy CommonAce ( AceFlags .Brak, AceQualifier.Odmowa dostępu, (liczba całkowita) ProcessAccessRights.PROCESS_ALL_ACCESS, Opcjonalny identyfikator bezpieczeństwa (WellKnownSidType.WorldSid, null), Zło, Zero) ); // Zapisz ten DACL SetProcessSecurityDescriptor (hProcess, dacl);
Pozostawiając to jako klient z ograniczeniami, nie mogę wylogować się z Menedżera zadań, ale jako administrator.
Jak widać, lewy przycisk X
może znajdować się w jednym mieście, aby zamknąć go bez menedżera, ale można to również wyeliminować. =
$ source - "korzystanie z systemu;z System.Collections.Generic;z System.ComponentModel;Korzystanie z System.Runtime.InteropServices;Korzystanie z System.Security.AccessControl;UseSystem.Security.Nazwa główna;Ukryj przestrzeń nazw2 pojemność publiczna myForm [DllImport ("advapi32.dll", SetLastError = prawda)] Zewnętrzny bool szumu GetKernelObjectSecurity (IntPtr Handle, int securityInformation, [Out] byte [] pSecurityDescriptor, uint nLength, online uint lpnLengthNeeded); statyczny publiczny RawSecurityDescriptor GetProcessSecurityDescriptor (IntPtr processHandle) [DllImport ("advapi32.dll", SetLastError True)] = static extern bool SetKernelObjectSecurity (deskryptor IntPtr, int securityInformation, [In] byte [] pSecurityDescriptor); [DllImport ("kernel32.dll")] zewnętrzny hałas publiczny IntPtr GetCurrentProcess (); [Flagi] Otoczenie Enum ProcessAccessRights 0xFFF), // Wszystkie możliwe prawa dostępu do obiektu akcji. Nieważne zakłócenia publiczne SetProcessSecurityDescriptor (IntPtr processHandle, RawSecurityDescriptor dacl) const DACL_SECURITY_INFORMATION liczba całkowita oznacza 0x00000004; byte [] rawsd = nowoczesny bajt [dacl.BinaryLength]; dacl.GetBinaryForm (rawsd, 0); w przypadku (! SetKernelObjectSecurity (processHandle, DACL_SECURITY_INFORMATION, rawsd)) odrzuć nowy wyjątek Win32Exception (); public static void ProtectMyProcess () // Pobierz regulację bieżącej metody IntPtr hProcess implikuje GetCurrentProcess (); // Przeczytaj DACL var dacl oznacza GetProcessSecurityDescriptor (hProcess); // Uwzględniamy tylko toreckless ACE dacl.DiscretionaryAcl.InsertAce ( 0, najlepszy CommonAs ( AceFlags .Brak, AceQualifier.Odmowa dostępu, (liczba całkowita) ProcessAccessRights.PROCESS_ALL_ACCESS, nowy SecurityIdentifier (WellKnownSidType.WorldSid, null), Zło, Zero) ); // Zapisz część zwykle DACL SetProcessSecurityDescriptor (hProcess, dacl); „@Dodaj typ -TypeDefinition Source -Język CSharp[ScriptBlock] $ scriptNewForm = Dodaj typ -AssemblyName System.Windows.Forms = pieniądze z nowego systemu obiektów.Windows.Forms.Form $ Form.Text "PowerShell to forma" $ Form.TopMost oznacza $ true Form.Width odpowiada 303 $ Form.Wysokość obejmuje 274 [void] $ Form.ShowDialog () $ Formularz.Pozbyć się ()$ Wyłącznik czasowy 200$ MaxResultTime = pochodzi z 120$ Maksymalna liczba wątków = 3$ ISS równa się [system.management.automation.runspaces.initialsessionstate] :: CreateDefault ()$ RunspacePool [runspacefactory] :: CreateRunspacePool (1, odpowiada $ MaxThreads, $ ISS, $ Host)$ RunspacePool.Open ()$ Praca = @ ()$ PowershellThread porównuje do [powershell] :: Utwórz (). AddScript ($ scriptNewForm)$ PowershellThread.RunspacePool = $ RunspacePool$ Handle = $ PowershellThread.BeginInvoke ()$ Praca oznacza | "" Uchwyt do używanego obiektu, strumienia, obiektu$ Job.Handle = dochód Handle$ Job.Thread = $ PowershellThread$ Job.Object oznacza $ komputer$ Zatrudnienie + równa się $ Zatrudnienie[Ukryj2.myForm] :: ChrońMójProces ()<#ForEach ($ praca w $ praca s) $ Job .Thread.EndInvoke ($ Job.Handle) $ Praca.Wątek.Utylizacja () $ Job.Thread oznacza to, że $ null rr Job.Handle jest równoważne buck null#>
Pobierz to oprogramowanie i napraw swój komputer w kilka minut. Hide Process From Task Manager C Net
Dolj Processen Fran Aktivitetshanteraren C Net
Ocultar El Proceso Del Administrador De Tareas C Net
Nascondi Il Processo Dal Task Manager C Net
Ocultar O Processo Do Gerenciador De Tarefas C Net
Masquer Le Processus Du Gestionnaire De Taches C Net
Skryt Process Iz Dispetchera Zadach S Net
Prozess Aus Dem Task Manager Ausblenden C Net
Proces Verbergen Voor Taakbeheer C Net
작업 관리자 C Net에서 프로세스 숨기기