回答
3
瀏覽
699
MinWinHooks
涅磐掛鉤
CFG掛鉤
AVRF掛鉤
Shim掛鉤
回答所涉及的環境:聯想天逸510S、Windows 10。
Windows 10更改
因此,我們將專門研究Windows 10中的新變化
新的數據結構和類型
新的版本號
新的API參數/導出/技術
語義/功能更改
回答所涉及的環境:聯想天逸510S、Windows 10。
MinWinHooks
涅磐掛鉤
CFG掛鉤
AVRF掛鉤
Shim掛鉤
回答所涉及的環境:聯想天逸510S、Windows 10。
Windows 10更改
因此,我們將專門研究Windows 10中的新變化
新的數據結構和類型
新的版本號
新的API參數/導出/技術
語義/功能更改
回答所涉及的環境:聯想天逸510S、Windows 10。
Windows 掛鉤技術
鉤子(Hook)技術是Windows消息處理機制的一個平臺,應用程序可以在上面設置子程序以監視指定窗口的某種消息,而且所監視的窗口可以是其他進程所創建的。當消息到達后,在目標窗口處理函數之前處理它。鉤子機制允許應用程序截獲處理window消息或特定事件。
鉤子(Hook)也是在等待捕獲系統中的某個消息或者動作。鉤子的應用范圍非常廣泛,比如輸入監控、API攔截、消息捕獲、改變程序執行流程等方面。殺毒軟件會用Hook技術鉤住一些API函數,比如鉤住注冊表讀寫函數,從而防止病毒對注冊表進行寫入;病毒使用Hook技術有針對性的捕獲鍵盤的輸入,從而記錄用戶的密碼等敏感信息;文件加密系統通過Hook技術在不改變用戶操作的情況下對用戶的文件進行透明加密,這些都屬于Hook范疇的知識。
在windows系統下,Hook技術的方法比較多,使用比較靈活,常見的Hook方法有Inline Hook,IAT Hook,Windows鉤子……Hook技術涉及DLL相關的知識。Hook技術也涉及注入的知識,想要把完成Hook功能的DLL文件加載到目標進程空間中,就要使用注入的知識。
Hook原理
Hook技術無論對安全軟件還是惡意軟件都是十分關鍵的一項技術,其本質就是劫持函數調用。但是由于處于Linux用戶態,每個進程都有自己獨立的進程空間,所以必須先注入到所要Hook的進程空間,修改其內存中的進程代碼,替換其過程表的符號地址。在Android中一般是通過ptrace函數附加進程,然后向遠程進程注入so庫,從而達到監控以及遠程進程關鍵函數掛鉤。
Hook技術的難點,并不在于Hook技術,初學者借助于資料“照葫蘆畫瓢”能夠很容易就掌握Hook的基本使用方法。如何找到函數的入口點、替換函數,這就涉及了理解函數的連接與加載機制。
從Android的開發來說,Android系統本身就提供給了我們兩種開發模式,基于Android SDK的Java語言開發,基于AndroidNDK的Native C/C++語言開發。所以,我們在討論Hook的時候就必須在兩個層面上來討論。
對于Native層來說Hook的難點其實是在理解ELF文件與學習ELF文件上,特別是對ELF文件不太了解的讀者來說;對于Java層來說,Hook就需要了解虛擬機的特性與Java上反射的使用。
回答所涉及的環境:聯想天逸510S、Windows 10。