日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows键盘驱动结构与消息机制--转

發(fā)布時間:2025/4/5 windows 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows键盘驱动结构与消息机制--转 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

https://www.douban.com/note/318793892/

本文主要介紹按鍵消息是如何傳遞到窗口并轉化為具體的按鍵消息的。

Windows系統(tǒng)是事件驅動的多任務系統(tǒng),其中按鍵和鼠標是主要的事件。按鍵是由鍵盤驅動獲得并轉換,然后廣播給各個窗口。

整個架構的核心是csrss.exe這個進程,對于“一般”的窗口,收到的消息都是由這個任務產生的。該任務負責用CreateFile方式打開鍵盤設備并讀取信息,獲得對應的鍵碼并發(fā)送給特定的進程,csrss.exe的啟動的輸入線程為win32k!RawInputThread,具體要把鍵盤消息發(fā)送給哪個線程,以及如何發(fā)送,是由csrss來控制的。

所以,每個進程的MessageLoop實際上是從這里讀取的,于是SetWindowHook之類的函數(shù)有些是掛到各個進程里,有些實際上是掛到了csrss里,達到監(jiān)控鍵盤的目的。但對于加密的控件(如網(wǎng)銀等),SetWindowHook不管用,但如果hook到RawInpuThread里,那么還是有可能讀到信息的。

csrss訪問的是鍵盤設備,具體這個設備是一個kbdclass設備,以下部分就是內核的代碼空間了。

因為一個系統(tǒng)里可能不只一個鍵盤(同理,鼠標也是),所以需要一個統(tǒng)一的驅動去管理所有的鍵盤設備,這個驅動就是kbdclass.sys,鍵盤設備類驅動,對應的設備名是L"\\Driver\\Kdbclass",RawInpuThread實際上訪問的是這個設備,而對于每個鍵盤,則是有各自的驅動,對于PS/2鍵盤是i8042prt.sys,對于USB鍵盤,這是另外的驅動,這些驅動稱為port驅動,是真正的設備驅動,對應的設備是KeyboadClass0、KeyboardClass1等等(有幾個鍵盤,數(shù)字就排到多少),RawInpuThread把請求發(fā)送到kbdclass,kbdclass把請求(IRP)pend到這一層,等待下層port驅動返回。

這里需要特別提出的一個函數(shù)是KeyboardClassServiceCallback,這個函數(shù)是kbdclass一層的callback,下層設備驅動的所有返回值都需要經(jīng)過它。所以,如果鉤子掛到這里,那么理論上所有的輸入都可以被攔截的,已經(jīng)親自測試過網(wǎng)銀控件的密碼會在此被泄露,但QQ不會,QQ2013會啟動失敗,估計是檢查了這個驅動。

順便說一句,早期的QQ加密沒那么恐怖,但它是啟動一個線程不停的SetWindowHook,使得自己的hook永遠在第一個,然后過濾掉所有的消息防止被人監(jiān)聽。后來的QQ可能是修改IDT里的鍵盤中斷實現(xiàn)的。

當然病毒也可以通過filter驅動注入到kbdclass和port驅動之間,來實現(xiàn)監(jiān)聽鍵盤,這也是一種常見的情況。

所以,一個按鍵的消息產生流程如下:

1)硬件中斷/硬件端口數(shù)據(jù)
//WinIO能模擬,或者修改IDT是在這一層
2)鍵盤Port驅動(USB or PS/2)
//Filter驅動在此
//KeyboardClassServiceCallback也在這一層被調用
3)kbdclass驅動
//處理鍵盤布局和鍵盤語言
4)Windows內核邊界(zwCreate/zwReadFile)
----------------------(系統(tǒng)調用)----------------------
5)Windows內核邊界(zwCreate/zwReadFile)
6)csrss.exe的win32k!RawInputThread讀取,完成scancode和vk的轉換
//SetWindowHook工作在這里(全局)
//kbd_event工作在這里
7)csrss.exe調用DispatchMessage等函數(shù)分發(fā)消息
//SetWindowHook工作在這里(進程)
//PostMessage和SendMessage在這里
8)各個進程處理消息

WinIO這個驅動比較特殊,它提供接口可以允許應用層直接寫端口,但只能寫PS/2端口,所以有些模擬按鍵程序通過WinIO來模擬按鍵。

對于標準的程序,PostMessage等函數(shù)可以完成模擬,但對于不太標準的軟件,只能用kbd_event來模擬,但有些軟件(如網(wǎng)銀控件)就只能在更靠近內核的區(qū)域模擬了。

同時,有一種輸入是很特殊的,就是DirectInput,這是DirectX提供的一種方法,大型游戲中很常見的用法,因為DirectInput的輸入速度很快,繞過了消息層。但對于這種軟件,在kbdclass一層甚至都無法模擬。目前還不確定DirectInput工作在哪一層,猜測可能是在kbdclass和port驅動之間,也許是一種filter驅動。對于這種輸入方法,可以WinIO來模擬,但對于USB鍵盤則沒有辦法。

Windows提供了一套API:SendInput,這個驅動發(fā)送按鍵消息時有兩種類型,一種是VK模式的,實際上跟kbd_event一樣,工作在csrss這一層,而另一種是ScanCode模式,MSDN里有這樣的描述:

Windows 2000/XP: Set the KEYEVENTF_SCANCODE flag to define keyboard input in terms of the scan code. This is useful to simulate a physical keystroke regardless of which keyboard is currently being used.

可以看出,這是能夠模擬更底層的按鍵的,理論上說是可以模擬DirectInput的按鍵的,實際測試也是這樣,但文檔中沒有說明在vista以后的版本是什么狀態(tài),所以暫時也無法知道在WIN7里的工作情況。

轉載于:https://www.cnblogs.com/davidwang456/p/8708619.html

總結

以上是生活随笔為你收集整理的Windows键盘驱动结构与消息机制--转的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩aa | 亚洲另类图区 | 国产一在线观看 | 欧美一区二区三区在线观看 | 国产成人免费在线观看 | 九九精品在线观看 | av片一区二区三区 | 伊人一区二区三区 | 热九九精品 | 伊人久久大香网 | 狠狠狠狠狠狠狠干 | 91视频二区 | 在线观看污污网站 | 日本吃奶摸下激烈网站动漫 | www.在线 | 操操综合网 | 日韩一区二区三区视频 | 国产精品3区 | 中文字幕人妻熟女人妻a片 麻豆91视频 | 国产寡妇色xxⅹ交肉视频 | 在线播放毛片 | 大肉大捧一进一出好爽动态图 | 久草最新视频 | 一级黄色片毛片 | 91在线视频免费看 | 岳奶大又白下面又肥又黑水多 | 影音先锋制服 | 自拍偷拍激情视频 | xxxxwww一片| 天天舔天天操天天干 | 国产精品午夜久久 | 91精品国产电影 | 久久久国产精品成人免费 | 成人动漫在线观看 | 欧美1区2区| 无人在线观看的免费高清视频 | 少妇捆绑紧缚av | 国产精品久久久一区二区三区 | 夜夜福利 | 国内成人在线 | 亚洲第一天堂网 | 色哟哟一区二区 | 国产一级视频 | 老熟女高潮一区二区三区 | 性人久久久久 | 久久久18禁一区二区三区精品 | аⅴ资源天堂资源库在线 | 日日操操| 久久久久无码国产精品一区李宗瑞 | 久久av中文字幕 | 麻豆一区产品精品蜜桃的特点 | 人妻视频一区二区三区 | 香蕉视频在线观看黄 | 欧美国产精品久久 | 欧美啪视频 | 欧洲一级黄色片 | 国产又黄又猛 | 黄色一级生活片 | 亚洲国产精品久久精品怡红院 | 老太脱裤让老头玩ⅹxxxx | 99久久精品国产毛片 | 性视频播放免费视频 | 欧美日韩在线播放视频 | 中文字幕不卡av | 男女网站在线观看 | 欧美精品99久久 | 免费看黄色片网站 | 成人污在线观看 | 影音先锋亚洲天堂 | 色婷婷av一区二区三区大白胸 | 国产九区| 日本成人不卡 | 成都4电影免费高清 | 99热8| 肉嫁高柳家 高清 | 久久久久国产精品人妻 | 国产精品国产三级国产传播 | 国产色婷婷一区二区三区竹菊影视 | 在线观看国产亚洲 | 亚洲熟伦熟女新五十路熟妇 | 日韩一级免费视频 | 欧美日韩综合精品 | 女性向片在线观看 | 在线观看麻豆视频 | 瑟瑟久久 | 黄瓜视频在线观看污 | 国内精品91| 国产精品成人免费一区二区视频 | 国产妻精品一区二区在线 | 国产美女流白浆 | 美女隐私无遮挡 | 久久99操| 视频在线观看一区二区三区 | 免费性片 | 国产在线h | 国产精品欧美精品 | 高清一区二区三区视频 | 国内露脸中年夫妇交换 | 精品91av |