1. 程式人生 > >奇技淫巧之除錯被遠端執行緒注入的DLL

奇技淫巧之除錯被遠端執行緒注入的DLL

遠端執行緒注入, 這東西大家都懂的, 一般都被大家用來幹些小小的壞事情,比如API Hook~~將DLL注入到其它程序並不是難事,問題是這個被注入的DLL不太好除錯,除錯DLL本來就是個比較頭疼的問題,更何況是這種執行在其它程序空間的DLL, 被注入DLL的程式,不崩潰還好,崩潰了,要定位崩潰點,真是夠麻煩的。

這幾天,無意中發現了一個可以除錯這種DLL的方法。

首先,需要準備兩樣東西:

1、微軟的Detours庫, 下載地址戳這裡: 下載連結

2、開啟Detours安裝目錄下的samples\setdll, 把這個原始碼編譯(需要先編譯Detours庫,具體編譯方法此處略過,不是本文重點)

將SetDLL.cpp編譯過後,就得到了SetDLL.exe, 這才是本文的重點。這東西是什麼呢?這東西實際上就是一個修改程式IAT的工具, 可以將指定的DLL加入到程式的IAT中, 程式啟動時就會自動載入指定的DLL, 嘿嘿嘿嘿~~到這兒,估計很多人已經明白了我要說什麼~~

看圖說話:


引數說明就是這樣的,用法很簡單,一看便知。

接下來,我來詳細說明除錯的步驟:

1、DLL工程一份, 不多說,是需要注入到其它程序中的那個DLL, 自行編寫。

2、將編譯出來的DLL和PDB檔案,放到要除錯程式的同一目錄,如圖:


3、使用SetDLL.exe將HookLib.dll加入到Demo.exe的匯入表:


執行完成後, 原始程式會被自動備份,不用擔心恢復原始檔案的問題, 也可以用/r 引數將DLL從IAT裡刪除掉,很簡單。

4、配置Visual Studio的本地除錯, 如圖:


5、在DLL入口下個斷點, F5啟動除錯。


看到了木有,妥妥的斷下來了~~~

這是本地除錯,如果想遠端除錯,只需要配置一下第4步,將本地Windows偵錯程式改成遠端Windows偵錯程式,配置一下引數即可,很方便。

除錯遠端注入DLL, 從此不再是難題~~~

本帖為原創,轉帖請說明出處,謝謝合作。

本帖地址:http://blog.csdn.net/sonsie007/article/details/25803895