Detour3.0 win7 64bit下的安裝

Max Woods發表於2014-08-23

最近在做API hook相關的東西,用了inline hook後感覺不錯,但是查詢資料發現inline hook並不穩定

inline hook 的原理是在系統訪問一個函式的時候先替換原函式入口處的內容跳轉到自己設計的hook函式中,然後在自己函式中進行hook工作。可是在並行系統中,很可能有個執行緒就在這個時候呼叫了被自己改掉的系統函式,出現我們無法預期的結果。

所以打算學習一下inline hook升級版:detour庫hook,其實hook過程原理基本一樣,只是微軟做了封裝和相關的衝突檢查,所以這種api hook穩定些。

(當然其他apihook方式還有modifying the Import Address Table (link provided later),using proxy DLLs and manifest files

 

用detour庫進行hook必須先部署Detour,

電腦環境:win7 64bit

1.從http://research.microsoft.com/sn/detours下載detour professional 3.0!!!不是Express版的哈~

2.安裝(此流程無腦)

3.生成detour.lib:安裝detour後,目錄中有src資料夾,把資料夾拷貝到\Microsoft Visual Studio 10.0\VC下

3.1開啟cmd進入Microsoft Visual Studio 10.0\VC\bin目錄輸入命令vcvars32.bat,執行後可以設定好編譯環境

3.2切換到\Microsoft Visual Studio10.0\VC\SRC,然後輸入nmake指令(這裡可能會有錯誤 未找到檔案“..\system.mak”,解決方法在下面)

4.部署lib檔案,上一步\Microsoft Visual Studio10.0\VC\lib中會生成lib檔案,將\Microsoft Visual Studio10.0\VC\src中的detours.h複製到..\include目錄下(如果include中沒有該標頭檔案)

整個部署完成了

 

detour的使用:

自己寫的原始碼中新增如下內容就可以使用detour了:

#include <detours .h> //*IMPORTANT: Look at path if compiler error

#pragma comment(lib, "detoured.lib")

#pragma comment(lib, "detours.lib")

 

未找到檔案“..\system.mak”解決方法:
將detours安裝目錄中的system.makMakefile複製到Microsoft Visual Studio 10.0\VC目錄就解決了

相關文章