Posted on 2010-07-02 15:18
S.l.e!ep.¢% 閱讀(598)
評論(0) 編輯 收藏 引用 所屬分類:
RootKit
??? 1:當編輯框獲得焦點時,定時隨機發送鍵盤消息,當需要獲取輸入的真實密碼時,發送WM_GETTEXT消息.由于隨機發送的鍵盤消息是我們自己發送的,所以我們可以將其與用戶輸入的鍵盤消息分開.
?? ?2:在Windows下加載一個模塊時使用的API是LoadLibrary函數,這個函數內部又會調用LoadLibraryEx函數,windows底層是UINCODE的,所以應該調用的是LoadLibraryExW。如果我們寫的正常程序,如果調用了LoadLibrary那摩LoadLibraryExW函數的返回地址應該位于Kernel32.dll中,或者我們就是直接調用了LoadLibraryExW那摩返回地址應該位于我們的程序中。但是如果是被裝了鉤子后,當你按下一個健后,系統會下按鍵焦點程序的地址空間中加載黑客寫的鍵盤記錄模塊,調用的是LoadLibraryExW,那摩這個函數的返回地址就不是以上的兩種情況了,經我是實驗是位于user32.dll中。根據這一點我們就可以判斷一個模塊是否為非法加載模塊了.
?? ?具體的實現要用到APIHook技術。可以HOOKIAT也可以InLineHook.如果是InLineHokk,在自己寫的HOOk函數中首先獲取[ESP]的值,這個就是返回值了。隨后,就拿這個返回值去比較就可以了。
?? ?3:Windows下的鉤子邏輯上是一個鏈狀的,一個系統中可以安裝很多的鉤子,這些鉤子會形成一個鉤子鏈,先裝的鉤子在最前頭,前面的鉤子通過調用CallNextHookEx函數將信息傳給后面的鉤子,如不不調用這個函數那摩鏈子就斷了,后面的鉤子永遠互惠獲取信息。我們不往下傳遞信息,我們自己處理,讓下面的鉤子瞪著眼著急去吧。
?? ?具體做法為:我們在我們的程序中裝上局部鉤子,在局部鉤子的回調函數中我們截獲按鍵消息,我們自己存起來,然后再給密碼框發個假消息,比如按下了A健,我們用我們的局部鉤子截獲了A健消息,我們保存起來,然后我們給密碼框發個假消息,就說我們接受到了個B健,然后不調用那個CallNextHookEx函數,而是直接返回1,這樣下面的鉤子函數就不調用了.