Program przejmujący kontrolę nad komputerem

Dzisiaj stworzymy prosty program przejmujący na chwilę kontrolę nad komputerem ofiary, jego działanie przedstawione jest na filmie.

Zacznijmy od utworzenia planu. Program ma się zachowywać następująco:

  1. Otworzyć notatnik
  2. Wpisać wybrany przez nas ciąg znaków
  3. Zacząć ruszać myszką w losowych miejscach.
  4. Chcielibyśmy aby program uruchamiał się po dwukliku na pliku *.jar

Punkt pierwszy - otworzenie notatnika

Możemy to zrealizować na dwa sposoby:

  1. Uruchomić okno "Run", wpisać do niego notepad.exe, następnie zatwierdzić enterem
  2. Wywołać polecenie "notepad.exe" w wierszu polecenia

Z moich testów wynika, że pierwsza metoda bywa zawodna. Mocno zależy od wydajności komputera. Dlatego skorzystamy z drugiej. Wywołanie polecenia w Javie jest dziecinnie proste:

Runtime rt = Runtime.getRuntime();
rt.exec("notepad.exe");

Spowoduje to uruchomienie notatnika.

Punkt drugi - wpisanie tekstu do notatnika

W tym celu - jak się pewnie domyślacie - wykorzystamy klasę Robot, która pozwala symulować ruch myszką oraz naciśnięcia klawiszy. Dajemy programowi chwilę na otwarcie notatnika, a następnie wypisujemy kolejne klawisze do naciśnięcia.

Thread.sleep(500);
robot.keyPress(KeyEvent.VK_T);
robot.keyPress(KeyEvent.VK_R);
robot.keyPress(KeyEvent.VK_O);
robot.keyPress(KeyEvent.VK_L);
robot.keyPress(KeyEvent.VK_O);
robot.keyPress(KeyEvent.VK_L);
robot.keyPress(KeyEvent.VK_O);
robot.keyPress(KeyEvent.VK_L);
robot.keyPress(KeyEvent.VK_O);

Punkt trzeci - ruszanie myszką

Ruszanie myszką również zrealizujemy za pomocą klasy robot. Tym razem będzie to metoda moveMouse(int x, int y). W moim wypadku zdecydowałem się "tylko" na 100 przeskoków. Możecie to oczywiście zmienić zgodnie z własnym zapotrzebowaniem :)

Random random = new Random();

for(int i=0; i< 100; i++) {

	int x = random.nextInt(1000);
	int y = random.nextInt(1000);

	robot.mouseMove(x,y);

	Thread.sleep(100);
}

Punkt czwarty - pakowanie projektu

Program jest właściwie gotowy. Pozostało go odpowiednio spakować. Możemy to zrobić wybierając w Eclipse opcję "Export as executable jar". Zdecydowałem się jednak na wykorzystanie mavena do budowania projektu. Dzięki temu wystarczy, że dodam odpowiedni plugin do pom.xml:

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>pl.javastart.microvirus.MicroVirus</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
        </plugins>
    </build>

A następnie uruchomię pakowanie:

mvn assembly:assembly

I gotowe! Programik gotowy.

Kilka słów na zakończenie

Program oczywiście nie zadziała jeśli:

  • na komputerze nie ma Javy
  • zostanie uruchomiony na Linuxie czy Macu gdzie nie ma notatnika
  • może on zostać bez problemu wyłączony - wystarczy ubić proces

Uważam jednak, że tyle może wystarczyć na zrobienie psikusa znajomym.

Dyskusja i komentarze

Masz pytania do tego wpisu? Może chcesz się podzielić spostrzeżeniami? Zapraszamy dyskusji na naszej grupie na Facebooku.