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

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


咨詢
建站咨詢
