国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Hook技術(shù)在遠(yuǎn)程監(jiān)視鍵盤(pán)輸入中的應(yīng)用

2012-09-25 09:17:46鄧全才李軍紅李鴻強(qiáng)趙書(shū)銀
關(guān)鍵詞:鉤子服務(wù)器端鍵盤(pán)

鄧全才 李軍紅 李鴻強(qiáng) 趙書(shū)銀

(河北建筑工程學(xué)院,河北張家口075000)

0 前言

鉤子是Windows操作系統(tǒng)中非常重要的一種系統(tǒng)接口,用它可以輕松截獲并處理在其他應(yīng)用程序之間傳遞的消息,鉤子技術(shù)可以獲取各類(lèi)鍵盤(pán)輸入信息,本文使用VC++6.0通過(guò)Socket通信技術(shù)和Windows Hook的消息攔截技術(shù),實(shí)現(xiàn)了對(duì)遠(yuǎn)程計(jì)算機(jī)隱蔽監(jiān)控窗口及實(shí)時(shí)監(jiān)視鍵盤(pán)輸入信息的程序.

1 Windows Hook程序的工作原理

Windows操作系統(tǒng)是建立在事件驅(qū)動(dòng)機(jī)制之上的,系統(tǒng)各部分之間的溝通也都是通過(guò)消息的相互傳遞而實(shí)現(xiàn)的.鉤子機(jī)制可以看作是一個(gè)中轉(zhuǎn)站,他可以插入消息系統(tǒng),重新控制系統(tǒng)發(fā)出的消息和傳遞,利用鉤子可以攔截系統(tǒng)發(fā)給應(yīng)用程序的消息[1].

如果想要捕獲和記錄在其他計(jì)算機(jī)上任意窗口的鍵盤(pán)輸入信息,需要采用全局鉤子來(lái)攔截整個(gè)系統(tǒng)中的鍵盤(pán)消息和窗口創(chuàng)建消息.全局鉤子處理函數(shù)必須以MFC DLL(動(dòng)態(tài)鏈接庫(kù))的形式加載,在VC++6.0中有三種形式的DLL,本程序采用的是標(biāo)準(zhǔn)靜態(tài)鏈接MFC DLL.本程序采用客戶機(jī)/服務(wù)器工作模式,客戶端為監(jiān)控端,服務(wù)器端為被監(jiān)控端[1].

2 程序的主要功能

本程序的最終目的是實(shí)現(xiàn)對(duì)遠(yuǎn)程計(jì)算機(jī)上的鍵盤(pán)輸入信息實(shí)時(shí)監(jiān)控,程序的主要功能如下[2][3]:

1)目標(biāo)主機(jī)開(kāi)機(jī)后能夠自動(dòng)啟動(dòng)服務(wù)器端.

2)目標(biāo)主機(jī)程序上定義了快捷鍵能使程序窗口顯示和隱藏.

3)目標(biāo)主機(jī)程序上有退出按鈕和卸載自動(dòng)啟動(dòng)功能.

4)目標(biāo)主機(jī)接入網(wǎng)絡(luò)后,目標(biāo)主機(jī)就進(jìn)入等待連接的狀態(tài),隨時(shí)等待遠(yuǎn)程客戶端的連接,連接后客戶端能夠控制鉤子的裝入,以便監(jiān)控目標(biāo)主機(jī)的鍵盤(pán)輸入信息.

5)夠捕捉目標(biāo)主機(jī)打開(kāi)窗口的信息,能夠清楚被監(jiān)控者當(dāng)前處于什么樣的窗口下進(jìn)行鍵盤(pán)的輸入,例如word文檔,txt文檔或IE瀏覽器.

6)記錄目標(biāo)主機(jī)鍵盤(pán)輸入的數(shù)據(jù).在獲得鍵盤(pán)輸入情況的同時(shí),在監(jiān)控端能把目標(biāo)主機(jī)端鍵盤(pán)輸入的信息記錄到一個(gè)文本文檔里.

3 程序設(shè)計(jì)

在程序中采用基于客戶機(jī)/服務(wù)器的模式進(jìn)行通信,并應(yīng)用Socket技術(shù)完成監(jiān)控端和被監(jiān)控端的通信.通信模型如圖1所示.

服務(wù)器端的程序設(shè)計(jì)如圖2所示,其中包括主程序的初始化、鉤子程序的啟動(dòng)、鉤子程序的卸載3個(gè)階段[4][5].

1)主程序的初始化階段.在該階段包括注冊(cè)表的寫(xiě)入、通信線程的建立、快捷鍵后門(mén).

第一、注冊(cè)表的寫(xiě)入:在程序的啟動(dòng)時(shí)會(huì)自動(dòng)通過(guò)代碼將程序的路徑寫(xiě)入到注冊(cè)表的開(kāi)機(jī)啟動(dòng)項(xiàng)中.程序在啟動(dòng)后運(yùn)行窗口是隱藏的.這樣以后被監(jiān)控的目標(biāo)機(jī)子在每次開(kāi)機(jī)啟動(dòng)時(shí)程序會(huì)自動(dòng)后臺(tái)運(yùn)行.

第二、通信線程的建立:在程序的啟動(dòng)時(shí)會(huì)建立一個(gè)通信的線程.在通信線程中會(huì)利用程序創(chuàng)建的套接字,并請(qǐng)求系統(tǒng)為其分配一個(gè)端口,然后等待客戶機(jī)發(fā)起連接.建立連接后該線程能隨時(shí)接收來(lái)自客戶端發(fā)出的指令信息.

第三、快捷鍵后門(mén):在程序的運(yùn)行時(shí),程序會(huì)定義快捷鍵后門(mén).通過(guò)快捷鍵能讓在被監(jiān)控主機(jī)上的程序窗口顯示和隱藏.

2)子程序的啟動(dòng):在服務(wù)器端程序初始化后,建立的通信線程可以隨時(shí)接收來(lái)自客戶端的指令.當(dāng)收到“打開(kāi)監(jiān)控”指令后服務(wù)器端會(huì)自動(dòng)加載鉤子程序,開(kāi)始監(jiān)控鍵盤(pán)的輸入信息.當(dāng)有鍵盤(pán)消息按下時(shí),鍵盤(pán)鉤子會(huì)自動(dòng)記錄下所按下鍵盤(pán)的信息,然后通過(guò)消息傳遞機(jī)制啟動(dòng)監(jiān)控程序的通信,將鍵盤(pán)的消息傳送給客戶端.

3)子程序的卸載:在服務(wù)器端的通信線程收到“終止監(jiān)控”命令后會(huì)自動(dòng)卸載鉤子程序,不在對(duì)目標(biāo)機(jī)進(jìn)行監(jiān)控,同時(shí)也斷開(kāi)課服務(wù)器端和客戶端的連接.在客戶端的實(shí)施方案框架的流程如圖3所示.

在發(fā)出連接請(qǐng)求客戶端成功和服務(wù)器端建立連接后,客戶端會(huì)創(chuàng)建一個(gè)通信線程開(kāi)始和服務(wù)器端進(jìn)行通信,然后客戶端能向服務(wù)器端發(fā)送“打開(kāi)監(jiān)控”的命令.在接收到服務(wù)器端發(fā)送過(guò)來(lái)的信息時(shí),會(huì)將信息寫(xiě)入到一個(gè)文本文檔里進(jìn)行保存.在不在對(duì)服務(wù)器端進(jìn)行監(jiān)控的時(shí),可以向服務(wù)器端發(fā)送“終止監(jiān)控”命令,同時(shí)斷開(kāi)與服務(wù)器端的連接,不再對(duì)服務(wù)器端進(jìn)行監(jiān)控.

4 實(shí)驗(yàn)及結(jié)果分析

準(zhǔn)備兩臺(tái)可以相互通信的計(jì)算機(jī)C和S,在計(jì)算機(jī)S上安裝被監(jiān)控端,在計(jì)算機(jī)C上安裝監(jiān)控端.

在完成監(jiān)控端和被監(jiān)控端的安裝后重新啟動(dòng)計(jì)算機(jī)S,被監(jiān)控端將自動(dòng)運(yùn)行,此時(shí)程序在運(yùn)行之初是隱藏的,通過(guò)熱鍵讓服務(wù)器端顯示,測(cè)試效果如圖4所示.

可以通過(guò)點(diǎn)擊卸載自動(dòng)啟動(dòng)按鈕使開(kāi)機(jī)自動(dòng)啟動(dòng)項(xiàng)消失,同時(shí)也可以點(diǎn)擊退出按鈕使程序退出.

服務(wù)器端成功啟動(dòng)后,在計(jì)算機(jī)C上打開(kāi)監(jiān)控端,并點(diǎn)擊“建立連接”按鈕,完成與服務(wù)器的連接.客戶機(jī)和服務(wù)器成功建立連接后,在計(jì)算機(jī)S上依次打開(kāi)文本文檔、Word文檔、瀏覽器以及飛信,輸入相關(guān)內(nèi)容進(jìn)行測(cè)試.

在計(jì)算機(jī)S上輸入信息的同時(shí),客戶端能夠根據(jù)按鍵的次序來(lái)判斷服務(wù)器端所輸入的字符信息,實(shí)驗(yàn)結(jié)果如圖5所示.

通過(guò)圖5發(fā)現(xiàn),計(jì)算機(jī)S在文本文檔下輸入了:“this is a test”;在Word文檔下輸入了:“This is a test”,其中按下空格鍵用“space”來(lái)識(shí)別,在瀏覽形式下登陸了QQ郵箱,其中用戶名為:1015210092,密碼為:199009112815,并使用了“tab”鍵;登陸飛信時(shí)用戶名為:13473300854.密碼為:mxl09ll,并使用了“tab”鍵.針對(duì)上述實(shí)驗(yàn)分析表明,監(jiān)控端可以確定服務(wù)器端打開(kāi)的窗口類(lèi)型和輸入的鍵盤(pán)信息.

5 結(jié)束語(yǔ)

本論文對(duì)Hook技術(shù)、Windows消息機(jī)制工作原理及遠(yuǎn)程控制的關(guān)鍵技術(shù)進(jìn)行系統(tǒng)的研究,重點(diǎn)對(duì)鍵盤(pán)信息的監(jiān)控、受控端與控制端通信進(jìn)行剖析,應(yīng)用VC++6.0設(shè)計(jì)并實(shí)現(xiàn)了對(duì)遠(yuǎn)程計(jì)算機(jī)的鍵盤(pán)輸入信息進(jìn)行有效實(shí)時(shí)監(jiān)視的系統(tǒng),對(duì)于研究Hook技術(shù)具有一定的參考價(jià)值.本文只是針對(duì)Hook技術(shù)進(jìn)行技術(shù)上的探討和研究,切勿利用Hook技術(shù)進(jìn)行竊取別人帳號(hào)和密碼信息等非法活動(dòng).

[1]王仁明,張永.利用Windows Hook技術(shù)監(jiān)控計(jì)算機(jī)的使用[J].計(jì)算機(jī)安全,2003,6

[2]倪步喜.Windows的鉤子技術(shù)及實(shí)現(xiàn)[J].計(jì)算機(jī)與現(xiàn)代化,2007,1

[3]殷振嶺,商書(shū)風(fēng).Windows系統(tǒng)鉤子與鍵盤(pán)監(jiān)控[J].網(wǎng)絡(luò)與計(jì)算機(jī)技術(shù),2004,5

[4]熊志勇.利用Hook技術(shù)實(shí)現(xiàn)屏幕熱區(qū)[J].編程與應(yīng)用起步,2002,12

[5]孫朝暉.基于木馬的計(jì)算機(jī)遠(yuǎn)程控制研究與實(shí)現(xiàn)[D].同濟(jì)大學(xué),2007,5

猜你喜歡
鉤子服務(wù)器端鍵盤(pán)
你知道手機(jī)撥號(hào)鍵盤(pán)上為什么要有*和#嗎?
鍵盤(pán)貓
Cлово месяца
ikbc R300機(jī)械鍵盤(pán)
誰(shuí)和誰(shuí)好
淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
成功(2018年10期)2018-03-26 02:56:14
幸福的一家
《脈望館鈔校本古今雜劇》穿關(guān)之“鉤子困帶”考
中華戲曲(2017年2期)2017-02-16 06:53:24
精鉤子
金山(2016年5期)2016-05-30 14:18:17
在Windows中安裝OpenVPN
合肥市| 乌苏市| 克什克腾旗| 泰安市| 辽宁省| 巴马| 西昌市| 武义县| 兴安盟| 湘阴县| 昌黎县| 石楼县| 玉环县| 湖北省| 张掖市| 福海县| 视频| 友谊县| 洛扎县| 武胜县| 南岸区| 岑溪市| 乌审旗| 潼关县| 泌阳县| 亳州市| 永春县| 新竹市| 当阳市| 城步| 唐河县| 邢台县| 太和县| 盐边县| 阜新市| 光泽县| 昭平县| 新龙县| 田东县| 金坛市| 娄烦县|