新聞中心
HOOKPROC是什么東西,理解不了?
SetWindowsHookEx 是設(shè)置一個鉤子的函數(shù),它把你定義的一個鉤子,安裝到視窗鉤子鏈里去。 例如鍵盤輸入鉤子,例如鼠標(biāo)輸入鉤子。 HOOKPROC 是一種變量類型,后面填具體的函數(shù)名,該函數(shù)返回HOOKPROC。 HINSTANCE 是視窗規(guī)定的一種變量類型(屬一種句柄),指向一個應(yīng)用程序?qū)嵗╤andle to application instance) 提示你要另寫一個具體的函數(shù): LRESULT CALLBACK my_mouse(int nCode, WPARAM wParam,, LPARAM lParam){ 這里含你鉤到的處理。 CallNextHookE... // 回鉤子鏈處理 }

成都創(chuàng)新互聯(lián)公司長期為成百上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為石臺企業(yè)提供專業(yè)的成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè),石臺網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
進(jìn)程內(nèi)API “Hook”應(yīng)怎么寫?
dll包含代碼和資源,代碼可以執(zhí)行,資源可以被代碼所使用;
dll可以通過window hook或者注冊為輸入法,被系統(tǒng)自動加載進(jìn)目標(biāo)進(jìn)程;
dll可以用代碼主動注入到目標(biāo)進(jìn)程(CreateRemoteThread),相當(dāng)于給它打一針;
dll進(jìn)入目標(biāo)進(jìn)程的時候,dll的DllMain函數(shù)(類似于main函數(shù))會被調(diào)用,這個時候可以做一些壞事,比如把系統(tǒng)API的入口替換成自己寫的,比如替換D3D的一些函數(shù)就可以做很多事情;
系統(tǒng)運(yùn)行過程中,這些API會被不斷的調(diào)用,這個時候你的代碼就可以不斷地做壞事了。
怎么在DLL里寫全局鉤子?
要實現(xiàn)Win32的系統(tǒng)鉤子,必須調(diào)用SDK中的API函數(shù)SetWindowsHookEx來安裝這個鉤子函數(shù),這個函數(shù)的原型是HHOOK SetWindowsHookEx(int idHook,HOOKPROC lpfn,HINSTANCE hMod,DWORD dwThreadId);,其中,第一個參數(shù)是鉤子的類型;第二個參數(shù)是鉤子函數(shù)的地址;第三個參數(shù)是包含鉤子函數(shù)的模塊句柄;第四個參數(shù)指定監(jiān)視的線程。如果指定確定的線程,即為線程專用鉤子;如果指定為空,即為全局鉤子。
其中,全局鉤子函數(shù)必須包含在DLL(動態(tài)鏈接庫)中,而線程專用鉤子還可以包含在可執(zhí)行文件中。
得到控制權(quán)的鉤子函數(shù)在完成對消息的處理后,如果想要該消息繼續(xù)傳遞,那么它必須調(diào)用另外一個SDK中的API函數(shù)CallNextHookEx來傳遞它。
鉤子函數(shù)也可以通過直接返回TRUE來丟棄該消息,并阻止該消息的傳遞。
通過使用 DLL,程序可以實現(xiàn)模塊化,由相對獨立的組件組成。加載快,運(yùn)行效率高,具有通用性,這是DLL的重要特點。
到此,以上就是小編對于的問題就介紹到這了,希望這3點解答對大家有用。
分享名稱:HOOKPROC是什么東西,理解不了?(cwindowshook)
文章源于:http://m.fisionsoft.com.cn/article/cdsgopg.html


咨詢
建站咨詢
