Chociaż dużo szukałem, wciąż nie jest jasne, co to jest "haczyk". Na przykład, czytałem ten post wiki answers:Co to jest "hak" i jak mogę go napisać w Javie? I jak komunikować się z jądrem, aby poznać klawisze naciskane przez użytkownika/rejestrujące się z OS
Hak jest metodą wstawienie kawałek kodu przed innym kawałek kodu, tak, że pierwszy fragment kodu wykonuje przed drugim kawałku kod, dając pierwszemu kodowi możliwość monitorowania i/lub filtrowania zachowania drugiego fragmentu kodu. Przykładem może być hak myszy, umożliwiający kodowi haczyka monitorowanie myszy przy jednoczesnym zachowaniu funkcjonalności oryginalnej procedury przetwarzania zdarzenia myszy.
Czytałem również ten post, ale nadal nie rozumiem, co to jest "hak". Czy ktoś może wyjaśnić, w laiku, co to jest "hak"? Dlaczego niektórzy piszą "hak"? Czy możliwe jest napisanie "haka" w Javie?
Uwaga:
chciałem napisać keyloggera w Javie i jeden z moich przyjaciół powiedział, że trzeba będzie napisać „hak” w C. nie można zapisać cały keyloggera w Javie (do obsługi tylko w oknach)?
EDIT
proszę dać odpowiedź w.r.t keyloggera. Jak mogę poprosić kernel
o podanie informacji o klawiszu wciśniętym do mojej aplikacji za pomocą zahaczenia? Albo jak mogę zarejestrować swoją aplikację w systemie operacyjnym za pomocą JNI? Chcę, aby moja aplikacja nagrywała klawisze naciskane przez użytkownika.
Myślę, że twój przyjaciel chciał powiedzieć, że musisz użyć natywnej metody. Możesz napisać natywną metodę w C i wywołać ją z poziomu Java, używając Java Native Interface (JNI). – toto2
@ toto2 i co zrobi ta natywna metoda? – saplingPro
To byłaby funkcja systemowa rejestrująca klucze. Właściwie lepiej jest całkowicie zrezygnować z Java do takiej pracy. Java ma być przenośna, a wadą jest to, że nie może robić rzeczy związanych z systemem operacyjnym. Nie znam Windowsa, ale prawdopodobnie C# byłby bardziej odpowiedni. – toto2