鍵盤過濾驅動快捷實現

2021-08-25 09:31:07 字數 1547 閱讀 6810

最近在網上無意中看到一段**,主要講述的是windows 下鍵盤過濾驅動的實現方式,這段**很有意識,是一種比較好的一種方法,主要將獲取的鍵盤驅動物件的所有分發函式替換,然後另行處理,具體的**如下;

//獲取鍵盤驅動物件

status = obreferenceobjectbyname(&unintnamestring,

obj_case_insensitive,

null,

0, iodriverobjecttype,

kernelmode,

null,

(pvoid *)&kdbdriverobject);

// 替換分發函式

for (i=0;i<=irp_mj_maximum_function;i++)

// 對irp_mj_read分發例程單獨處理

ntstatus c2pdispatchgeneral(in pdevice_object deviceobject, in pirp irp)

gc2pkeycount ++;

devext = (pc2p_dev_ext)deviceobject->deviceextension;

currentirpstack = iogetcurrentirpstacklocation(irp);

iocopycurrentirpstacklocationtonext(irp);

kdprint(("c2pdispatchread->iosetcompletionroutine/n"));

iosetcompletionroutine(irp,c2preadcomplete,deviceobject,true,true,true);

return iocalldriver(devext->lowerdeviceobject,irp);

}

// plowerdeviceobject = ioattachdevicetodevicestack(pfilterdeviceobject,ptargetdeviceobject);

// 返回的低層驅動物件

return iocalldriver(((pc2p_dev_ext)deviceobject->deviceextension)->lowerdeviceobject,irp);

}//完成例程函式處理

ntstatus c2preadcomplete(in pdevice_object deviceobject, in pirp irp, in pvoid context)

} gc2pkeycount -- ;

if (irp->pendingreturned)

return irp->iostatus.status;

}簡單吧,只需這幾步就可以完成鍵盤過濾驅動,編寫完之後,我利用password對話方塊嘗試過,竟然能捕獲鍵盤輸入的資料。那天要是能安裝在網咖的機器上,豈不是可以盜取網管的密碼!!!(現實並非這麼簡單)

驅動筆記15 鍵盤過濾驅動學習筆記

鍵盤過濾驅動對於分層驅動的學習是乙個很好的例子,它相對檔案過濾驅動來說較為簡單,也更容易理解。並不是所有的驅動都需要直接訪問硬體的,事實上幾乎所有的硬體裝置都存在著驅動程式鏈,最底層的驅動程式可以直接訪問硬體,並對上層提供透明服務,最上層的驅動程式只要對接收到的資料進行過濾 格式化等處理即可,這樣大...

開發鍵盤過濾驅動實現模擬按鍵過程中遇到的問題

如何動態御載鍵盤過濾驅動 要做到動態御載鍵盤過濾驅動,明白其工作執行的原理是很重要的。首先必須要知道鍵盤過濾驅動是工作在非同步模式下的,這一點很重要。為了得到乙個按鍵操作,首先需要傳送乙個irp mj read到驅動的裝置棧,驅動收到這個irp會做什麼樣的處理呢?它會一直保持這個irp為pendin...

驅動中實現模擬鍵盤按鍵

標 題 驅動中實現模擬鍵盤按鍵 作 者 luocong 在ring3中實現模擬鍵盤按鍵有n n種方式,比如sendinput keybd event 但在驅動中要怎麼模擬呢?1 寫埠 define defi8042 data port puchar 0x60 define defi8042 ctrl...