一種鍵盤輸入數(shù)據(jù)保護方法
【技術領域】
[0001]本發(fā)明涉及計算機技術領域,尤其涉及一種鍵盤輸入數(shù)據(jù)保護方法。
【背景技術】
[0002]鍵盤類驅動保護原理都是過濾,取勝的關鍵在于誰第一個得到信息。一種方發(fā)是Hook分發(fā)函數(shù),即將鍵盤驅動的分發(fā)函數(shù)替換成自己的函數(shù)用來達到過濾的目的。
[0003]在網(wǎng)絡社會中計算機網(wǎng)絡已經成為個人、企業(yè)、政府和其他組織的重要信息載體和傳輸管道。但是在享受計算機以及計算機網(wǎng)絡所帶來的方便性的同時,如何保障出現(xiàn)的內部網(wǎng)絡安全和外部安全問題。防火墻、入侵檢測、內外網(wǎng)隔離以及其他對外部網(wǎng)絡的訪問控制系統(tǒng),然而卻難以解決從計算機底層所帶來的網(wǎng)絡安全問題,其中作為一個最常用的交互輸入設備鍵盤,安全卻常常被人所忽略。常見的有干擾用戶正常行為,如模擬鍵盤,盜取游戲玩家,銀行登陸帳號,密碼鍵盤等木馬,以及各種鍵盤病毒,這些都嚴重引響到個人,企業(yè),政府及其他組織的正常業(yè)務,甚至造成不可挽回的損失。對輸入設備鍵盤進行合的管理與控制,可以有效地防止用戶重要信息被盜取,破壞,更是為現(xiàn)在以及將來的網(wǎng)絡電子商務的繁榮提供基礎安全保障。
[0004]Windows驅動采用分層的結構設計,處于功能驅動程序之上的過濾器驅動程序稱為上層過濾器;處于功能驅動程序之下的過濾器驅動程序稱為下層過濾器。雖然這兩種驅動程序本身用于不同的目的,但創(chuàng)建這兩種驅動程序的機制完全相同。實際上,創(chuàng)建過濾器驅動程序和創(chuàng)建任何其他驅動程序一樣,都有DriverUnload例程、一組派遣函數(shù)等。
[0005]當有新設備接入時,Windows系統(tǒng)PnP管理器會發(fā)向PDO驅動(物理驅動)的AddDevice例程發(fā)起調用,就會首先經過上層過濾器驅動程序,最后也必然會經過下層過濾驅動程序,在AddDevice例程中過濾驅動的工作通常為創(chuàng)建一個過濾設備,然后將其附著到PDO上,這樣就可以實現(xiàn)對特定IRP的過濾功能。傳統(tǒng)的應用級(Ring3級),NT Attach二種過濾過驅動的鍵盤技術監(jiān)控與保護強度已經不能滿足。
【發(fā)明內容】
[0006]針對以上問題,本發(fā)明提供了一種構思巧妙、合理,驅動穩(wěn)定,兼容性強,未對用戶的其他正常行為造成任何影響,可以達到預期的功能目標,不會給非法用戶任何漏洞破壞防護機制,方便實際應用的鍵盤輸入數(shù)據(jù)保護方法。
[0007]本發(fā)明的技術方案如下:
[0008]一種鍵盤輸入數(shù)據(jù)保護方法,包括以下步驟:
[0009]HOOK 方案一:
[0010](I)獲得類驅動對象,即首先獲得鍵盤類驅動對象,以替換分發(fā)函數(shù);
[0011](2)修改類驅動的分發(fā)函數(shù)指針,即保存原有的驅動對象的分發(fā)函數(shù),在調函替換中用原子操作,并注冊相關的回調函數(shù),在IRP完成后獲取鍵盤數(shù)據(jù),以此修改鍵盤數(shù)據(jù)。
[0012]所述鍵盤輸入數(shù)據(jù)保護方法,其中:所述步驟(I)中以windows系統(tǒng)為例,驅動的名字是 “\\Device\\Kbdclass”,可直接用函數(shù) ObReferenceObjectByName 來獲取。
[0013]HOOK 方案二:
[0014]一種鍵盤輸入數(shù)據(jù)保護方法,其是通過鍵盤敲擊按鍵,使CPU轉向鍵盤中斷處理函數(shù),在中斷處理函數(shù)中通過讀取端口指令來獲取本次中斷的鍵盤掃描碼,放出系統(tǒng)指定隊列后完成本次中斷處理函數(shù),CPU轉向上次被中斷的程序繼續(xù)執(zhí)行,在偽中斷處理函數(shù)讀取中斷后,在監(jiān)控模式下回寫鍵盤描述碼值,再調用原中斷處理函數(shù)讀取處理鍵盤數(shù)據(jù);通過匯編指令Sidt獲取中斷描述表的基地址,保存本項中斷處理函數(shù)的地址,通過修改函數(shù)指針,使其指向偽中斷處理函數(shù),在偽中斷處理函數(shù)中調用原來中斷處理函數(shù),在修改時關閉中斷。
[0015]有益效果:
[0016]本發(fā)明鍵盤輸入數(shù)據(jù)保護方法構思巧妙、合理,內核驅動技術穩(wěn)定,兼容性強,并且這種方法未對用戶的其他正常行為造成任何影響,其中對鍵盤控制的測試結果可以達到預期的功能目標;而且,這種方式的驅動不需要對注冊表進行任何操作,只需要動態(tài)地創(chuàng)建服務和刪除服務就可以加載和卸載驅動,不會給非法用戶任何漏洞破壞防護機制;顯然,從思想的原理基礎到實際應用,這種方法要比NT,WDM過濾驅動的方法更加完善和安全。
【附圖說明】
[0017]圖1為本發(fā)明實施例1的鍵盤輸入數(shù)據(jù)保護方法在windows下鍵盤驅動的框架結構;
[0018]圖2為本發(fā)明實施例2的鍵盤輸入數(shù)據(jù)保護方法的流程圖。
【具體實施方式】
[0019]下面結合具體實施例對本發(fā)明做進一步描述:
[0020]實施例1
[0021]如圖1所示,本發(fā)明鍵盤輸入數(shù)據(jù)保護方法,具體包括以下步驟:
[0022](I)獲得類驅動對象
[0023]以windows系統(tǒng)為例,因為這個驅動的名字是“\\Device\\Kbdclass”,所以可以直接用函數(shù)ObReferenceObjectByName來獲?。?br>[0024](2)修改類驅動的分發(fā)函數(shù)指針
[0025]保存原有的驅動對象的分發(fā)函數(shù),在調函替換中用到一個原子操作,即InterlockedExchangePointer函數(shù),用戶設置新的函數(shù)指針是原子的,不會被打斷;需要HOOK KdbDriverOb ject->MajorFunct1n [IRP_MJ_READ],并注冊相關的回調函數(shù),在 IRP 完成后獲取爭鍵盤數(shù)據(jù),為此可以修改數(shù)據(jù)內容,甚至改變數(shù)據(jù)流動方向。
[0026]實施例2
[0027]在Windows操作系統(tǒng)中鍵盤數(shù)據(jù)與系統(tǒng)交互通過中斷進行,當鍵盤敲擊按鍵時,會引發(fā)鍵盤中斷,CPU轉向鍵盤中斷處理函數(shù)(正常情況為中斷描述表基地址+0x93),在中斷處理函數(shù)中通過讀取端口指令來獲取本次中斷的鍵盤掃描碼,放出系統(tǒng)指定隊列后完成本次中斷處理函數(shù),CPU轉向上次被中斷的程序繼續(xù)執(zhí)行;在偽中斷處理函數(shù)讀取中斷后,在監(jiān)控模式下回寫鍵盤描述碼值;下保護方法下,可以不用回寫鍵盤描述碼值;再調用原中斷處理函數(shù)讀取處理鍵盤數(shù)據(jù)。
[0028]通過匯編指令Sidt獲取中斷描述表的基地址,保存本項中斷處理函數(shù)的地址,通過修改函數(shù)指針,使其指向偽中斷處理函數(shù),注意在偽中斷處理函數(shù)中需要調用原來中斷處理函數(shù),在修改時關閉中斷。
[0029]本發(fā)明構思巧妙、合理,驅動穩(wěn)定,兼容性強,未對用戶的其他正常行為造成任何影響,可以達到預期的功能目標,不會給非法用戶任何漏洞破壞防護機制,方便實際應用。
【主權項】
1.一種鍵盤輸入數(shù)據(jù)保護方法,包括以下步驟: (1)獲得類驅動對象 首先獲得鍵盤類驅動對象,以替換分發(fā)函數(shù); (2)修改類驅動的分發(fā)函數(shù)指針 保存原有的驅動對象的分發(fā)函數(shù),在調函替換中用原子操作,并注冊相關的回調函數(shù),在IRP完成后獲取鍵盤數(shù)據(jù),以此修改鍵盤數(shù)據(jù)。
2.如權利要求1所述的鍵盤輸入數(shù)據(jù)保護方法,其特征在于:所述步驟(I)中以windows系統(tǒng)為例,驅動的名字是“\\Device\\Kbdclass”,可直接用函數(shù)ObReferenceObjectByName 來獲取。
3.—種鍵盤輸入數(shù)據(jù)保護方法,其特征在于:通過鍵盤敲擊按鍵,使CPU轉向鍵盤中斷處理函數(shù),在中斷處理函數(shù)中通過讀取端口指令來獲取本次中斷的鍵盤掃描碼,放出系統(tǒng)指定隊列后完成本次中斷處理函數(shù),CPU轉向上次被中斷的程序繼續(xù)執(zhí)行;在偽中斷處理函數(shù)讀取中斷后,在監(jiān)控模式下回寫鍵盤描述碼值,再調用原中斷處理函數(shù)讀取處理鍵盤數(shù)據(jù); 通過匯編指令sidt獲取中斷描述表的基地址,保存本項中斷處理函數(shù)的地址,通過修改函數(shù)指針,使其指向偽中斷處理函數(shù),在偽中斷處理函數(shù)中調用原來中斷處理函數(shù),在修改時關閉中斷。
【專利摘要】本發(fā)明涉及一種鍵盤輸入數(shù)據(jù)保護方法,其包括(1)獲得類驅動對象,即首先獲得鍵盤類驅動對象,以替換分發(fā)函數(shù);(2)修改類驅動的分發(fā)函數(shù)指針,即保存原有的驅動對象的分發(fā)函數(shù),在調函替換中用原子操作,并注冊相關的回調函數(shù),在IRP完成后獲取鍵盤數(shù)據(jù),以此修改鍵盤數(shù)據(jù)。本發(fā)明構思巧妙、合理,驅動穩(wěn)定,兼容性強,未對用戶的其他正常行為造成任何影響,可以達到預期的功能目標,不會給非法用戶任何漏洞破壞防護機制,方便實際應用。
【IPC分類】G06F21-83
【公開號】CN104834876
【申請?zhí)枴緾N201510065254
【發(fā)明人】嚴清
【申請人】嚴清
【公開日】2015年8月12日
【申請日】2015年2月6日