Глобальный кейлоггер в Java Swing

Я хочу, чтобы Кейлоггер работал в Java Swing. Я мог бы создать простой кейлоггер, который улавливает нажатия клавиш и записывает их в файл журнала, когда фокус находится в окне Swing. Поскольку фокус должен быть на окне, можно ли сделать невидимый JFrame, который всегда находится сверху? Что-то вроде этого:

public class Logger extends JFrame implements KeyListener


logger.setVisible(false);
logger.setAlwaysOnTop(true);

Возможно ли это в Java?


person Paul Erlenmeyer    schedule 02.11.2018    source источник
comment
Мне трудно представить этическую причину для этого. Не то чтобы это возможно в Java, несмотря ни на что.   -  person VGR    schedule 02.11.2018
comment
Этическая причина состоит, например, в создании глобальных горячих клавиш для вашего приложения. Что-то вроде глобальных горячих клавиш любой музыкальной программы для запуска или паузы трека. Но на самом деле мне просто интересно узнать о вредоносных программах и о том, насколько легко их внедрить.   -  person Paul Erlenmeyer    schedule 02.11.2018


Ответы (1)


Итак, вам нужен кейлоггер, который записывает нажатия клавиш, даже если фокус не находится в окне Java Swing, верно? Сама Java не может этого сделать, но Java Native Interface (JNI) может. Вы можете погуглить «Java System Hook» и загрузить JAR с Github. (https://github.com/kristian/system-hook/releases) В одним словом, он продолжает записывать вашу клавиатуру, пока программа работает, независимо от того, на каком окне вы фокусируетесь.

Как я это использую: я написал программу, которая продолжает работать, пока я играю в игры, и может распечатать любую клавишу, которую я нажимаю в игре.

person Xingji Chen    schedule 02.11.2018
comment
Тай сэр. Только что посмотрел. В этом случае было бы разумнее сделать все это на C++. - person Paul Erlenmeyer; 03.11.2018