讀書筆記_windows的APIHook技術_part 2

來源:互聯網
上載者:User

IAT鉤子簡單強大,但缺點是這種鉤子比較容易被發現。另外一方面這種方式經常使用,驅動程式驗證機制就是使用的IAT hook這種方式,還有作業系統在一個稱為DLL轉寄(DLL forwarding)的進程中也用到了IAT hook。所以即使檢測到了IAT hook,但區分良性鉤子和惡意鉤子仍然是困難的。

IAT hook的另外一個缺點就是只有當隱式調用DLL時,IAT hook才起作用,而通過LoadLibrary 和GetProcAddress來調用dll時,IAT hook將不會起作用。原因顯示調用採用的是後期按需綁定技術,這種Binder 方法在調用函數時才解析函數地址,當鉤住這些函數時,IAT中可能不存在它們的地址。

IAT hook的實驗方法,可以按IAT hook的第一部分的描述完成驅動的編寫,但注意在回呼函數中以下兩個變數

        char *pc_dlltar = "kernel32.dll";

       char *pc_fnctar = "GetProcAddress";

最好設定稱為自己編寫的dll和函數名,我這裡設定成為DriverDll.dll與test函數。

然後是安裝這個驅動,可以使用SRVINSTW.EXE進行安裝,假設設定的服務名為APIhook

然後是編寫一個測試程式,分別採用顯示和隱式兩種方法調用DriverDll.dll的test函數,注意是分別使用。

然後在運行中輸入cmd,再輸入net start APIhook. 此時該服務已啟動,IAT hook已經工作。

可以使用Dbgview進行觀察IAT hook的執行過程,注意一定要在DbgView中的Caputure選項中勾選Capture Kernel。

然後分別運行測試程式,結果為:

當顯示調用dll時發現不了test函數的地址,而隱式調用時則能夠撲捉到test函數在IAT中的地址。結果如所示:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.