打造自己的鍵盤(pán)記錄器

打造自己的鍵盤(pán)記錄器

ID:11069366

大?。?7.00 KB

頁(yè)數(shù):7頁(yè)

時(shí)間:2018-07-09

打造自己的鍵盤(pán)記錄器_第1頁(yè)
打造自己的鍵盤(pán)記錄器_第2頁(yè)
打造自己的鍵盤(pán)記錄器_第3頁(yè)
打造自己的鍵盤(pán)記錄器_第4頁(yè)
打造自己的鍵盤(pán)記錄器_第5頁(yè)
資源描述:

《打造自己的鍵盤(pán)記錄器》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。

1、打造自己的鍵盤(pán)記錄器作者:zaroty偶破博:http://hi.badu.com/zaroty說(shuō)起鍵盤(pán)記錄,想必很多朋友都用過(guò)網(wǎng)上流傳的一些鍵盤(pán)記錄軟件吧,但是有沒(méi)有想過(guò)自己寫(xiě)一個(gè)呢?也許你會(huì)想:會(huì)不會(huì)很復(fù)雜???我可以很負(fù)責(zé)的告訴你,寫(xiě)鍵盤(pán)記錄是很簡(jiǎn)單的。你所需要的僅僅是懂得一些C語(yǔ)言的DLL編寫(xiě),剩下的就是仔細(xì)的研究下MSDN上面的函數(shù)和一些耐心啦。下面就讓我這小菜帶大家來(lái)寫(xiě)屬于自己的鍵盤(pán)記錄器吧。說(shuō)道鍵盤(pán)記錄,免不掉要說(shuō)一下Windows的HOOK函數(shù)。通過(guò)搜索引擎,我們會(huì)得到好多關(guān)于hook的定義,這里就用比較通俗易懂的話來(lái)說(shuō)下什么是hook

2、。Hook可以說(shuō)就是一個(gè)間諜,假如你想要給你遠(yuǎn)在馬來(lái)西亞的女朋友寫(xiě)一封信,你可以直接把寫(xiě)好的信投到郵局,然后由郵遞員送到你女朋友手里。但是當(dāng)hook這個(gè)陰險(xiǎn)的間諜出現(xiàn)時(shí),事情就完全發(fā)生了變化。Hook會(huì)趕在郵遞員把你的信送出去之前進(jìn)行一些你并不想要的操作,這樣一來(lái),你的信可能被修改、復(fù)制,甚至直接銷(xiāo)毀。那么按鍵消息也就像你的那封信一樣,當(dāng)在系統(tǒng)中安裝了hook之后,就可以截取所有的鍵盤(pán)消息,從而對(duì)這些消息進(jìn)行操作,還可以決定是否繼續(xù)將這個(gè)消息傳送到另外一個(gè)正在等候的程序。通過(guò)上面簡(jiǎn)單的比喻,我想大家應(yīng)該對(duì)hook有了一個(gè)簡(jiǎn)單的認(rèn)識(shí),下面我們來(lái)說(shuō)下ho

3、ok的分類以及一些具體的使用。Hook可以分為下面幾種,不同類型的鉤子有著不同的作用:WH_CALLWNDPROCWH_CALLWNDPROCRETWH_CBTWH_DEBUGWH_KEYBOARD_LLWH_MOUSEWH_MOUSE_LLWH_MSGFILTERWH_FOREGROUNDIDLEWH_GETMESSAGEWH_JOURNALPLAYBACKWH_JOURNALRECORDWH_KEYBOARDWH_SHELLWH_SYSMSGFILTER這么多的鉤子類型,我們?cè)谶@一不去進(jìn)行一一的解釋,僅僅拿出我們需要的兩個(gè)來(lái)說(shuō)一下,其他的大家可以

4、參閱MSDN上的SetWindowsHookEx函數(shù)的定義。這里與我們鍵盤(pán)記錄有關(guān)系的兩個(gè)鉤子類型是:WH_KEYBOARD和WH_KEYBOARD_LL,這兩個(gè)都是鍵盤(pán)鉤子,他們有什么區(qū)別呢?MSDN上面說(shuō)的是WH_KEYBOARD會(huì)在應(yīng)用程序調(diào)用GetMessage或者PeekMessage函數(shù)并且有鍵盤(pán)消息(按下或者釋放)的時(shí)候會(huì)調(diào)用相應(yīng)的函數(shù)進(jìn)行處理,WH_KEYBOARD_LL這個(gè)類型是只要有鍵盤(pán)輸入事件的發(fā)生,它都會(huì)將鍵盤(pán)消息傳給相應(yīng)函數(shù),而在我自己試驗(yàn)的時(shí)候發(fā)現(xiàn)WH_KEYBOARD類型的鉤子只記錄本程序的按鍵消息,對(duì)發(fā)送到其他程序的按

5、鍵消息不予以響應(yīng)。所以,下面我們就用WH_KEYBOARD_LL這個(gè)類型的底層鍵盤(pán)鉤子,來(lái)記錄計(jì)算機(jī)上所有的鍵盤(pán)輸入。下面我們看一下鉤子使用:首先我們要定義一個(gè)鉤子的回調(diào)函數(shù),這樣當(dāng)相應(yīng)的系統(tǒng)消息傳送給鉤子的時(shí)候就會(huì)由這個(gè)回調(diào)函數(shù)進(jìn)行處理。回調(diào)函數(shù)書(shū)寫(xiě)必須按照下面的語(yǔ)法:LRESULTCALLBACKHookProc(intnCode,WPARAMwParam,LPARAMlParam);HookProc是你自己定義的名字。nCode參數(shù)是Hook代碼,Hook子程使用這個(gè)參數(shù)來(lái)確定任務(wù)。這個(gè)參數(shù)的值依賴于Hook類型,每一種Hook都有自己的Hoo

6、k代碼特征字符集。wParam和lParam參數(shù)的值依賴于Hook代碼,但是它們的典型值是包含了關(guān)于發(fā)送或者接收消息的信息。我們這里用到的是WH_KEYBOARD_LL對(duì)應(yīng)的回調(diào)函數(shù)LowLevelKeyboardProc,他的定義如下:LRESULTCALLBACKLowLevelKeyboardProc(intnCode,//hookcodeWPARAMwParam,//messageidentifierLPARAMlParam//messagedata);這里的wParam指的是鍵盤(pán)消息的標(biāo)識(shí),它的值可以是WM_KEYDOWN,WM_KEYUP

7、,WM_SYSKEYDOWN,或者WM_SYSKEYUP.而lParam則指向一個(gè)KBDLLHOOKSTRUCT結(jié)構(gòu)體,下面是KBDLLHOOKSTRUCT結(jié)構(gòu)體的定義:typedefstructtagKBDLLHOOKSTRUCT{DWORDvkCode; //virtual-keyDWORDscanCode;DWORDflags;DWORDtime;ULONG_PTRdwExtraInfo;}KBDLLHOOKSTRUCT,*PKBDLLHOOKSTRUCT;知道了上面的這些,我們就可以開(kāi)始寫(xiě)我們的回調(diào)函數(shù)了:LRESULTCALLBACKLow

8、LevelKeyboardProc(intnCode,WPARAMwParam,LPARAMlParam){

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。