Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 18171|Odpowiedź: 0

[Komunikacja] Czysta implementacja haka w C#

[Skopiuj link]
Opublikowano 07.02.2019 21:10:23 | | |
Czysta implementacja haka C#

Aby zaimplementować system hooks, jest to bardzo proste – wystarczy wywołać trzy API Win32.
SetWindowsHookEx służy do konfigurowania haków. (Ustaw kartę, aby sprawdzić potrzebne informacje)

CallNextHookEx służy do przekazywania haków (wiadomości są ważne, więc skąd pochodzą, powinny wracać tam, gdzie chcesz je zablokować)




Odłącz WindowsHookEx Odinstaluj haki (odinstalowanie jest bardzo ważne, zbyt wiele zablokowanych ustawień powoduje zaciarki)


Artykuł "JAK TO: Setting Window Hooks in Visual C# .NET" opisuje to następująco:
Globalne haki nie są obsługiwane w frameworku .NET
Nie da się zaimplementować globalnych hooków w frameworku Microsoft .NET. Aby zainstalować globalny hak, hak musi mieć natywną bibliotekę dynamicznych łączeń (DLL), aby można go było wstawić do innego procesu, który musi być wywołany do ważnej i spójnej funkcji. Wymaga to eksportu DLL, który nie jest obsługiwany przez framework .NET. Kod zarządzany nie ma koncepcji posiadania jednolitej wartości wskaźników funkcji, ponieważ są one dynamicznie konstruowanymi proxy.
Znalazłem dużo kodu w Internecie i większość z nich zawiera DLL C++ do identyfikacji DLL zawierającej podprogram wspomniany przez lpfn, co wydaje się potwierdzać to twierdzenie.

W rzeczywistości jednak tak nie jest, a globalny hak można zaimplementować za pomocą następującego kodu:
IntPtr pInstance = Marshal.GetHINSTANCE( Assembly.GetExecutingAssembly(). ManifestModule );
Win32API.SetWindowsHookEx( WH_MOUSE_LL,m_MouseHookProcedure, pInstance, 0 );
Uwaga: Właściwość ManifestModule to nowy dodatek w .Net Framework 2.0, więc jeśli nadal używasz . W Net Framework 1.x możesz użyć metody GetModules, aby pobrać wszystkie moduły aktualnego asemblera, a następnie użyć jednego z nich jako parametru dla metody GetHINSTAN, aby uzyskać odpowiedni wskaźnik uchwytu.





Poprzedni:Delegate w C#
Następny:Wykorzystanie funkcji hook w umiejętnościach programowania w C# - SetWindowsHookEx
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com