2010-05-24 41 views
3

好吧,我正在慢慢學習C++。我熟悉所有的控制檯語法和所有內容,但現在我正在進行Windows編程。現在我試圖做的是創建一個注入到一個進程中的DLL,所以它被吸引了。我希望C++應用程序做的所有事情都有一個文本,如果它被成功注入,就會說「掛鉤」,還有一個發生錯誤時發生錯誤。或者,即使我可以在沒有DLL的情況下執行此操作,只需打開一個可執行文件,並且當我試圖掛鉤的某個進程打開後,狀態將更改爲「掛鉤」。此外,我有一個safaribooksonline.com帳戶,所以如果您有任何建議,請將其寫下。謝謝C++鉤子進程和顯示狀態

回答

3

我想你可能會看着這個倒退。在C/C++中,應用程序'拉'一個DLL,而不是將一個DLL'注入'到應用程序中。通常對於插件/鉤子,有一些機制可以通知應用程序DLL的可用性(通常只是它存在於特定的目錄中),而配置文件或其他邏輯用於指示應用程序顯式加載庫,提取功能或兩個,並打電話給他們。

對於Windows編程,我建議查找LoadLibrary()API調用的示例。你可能會發現a tutorial或兩個如何做到這一點。

1

如果通過「掛鉤」您的意思是「讓我的DLL在該進程的地址空間中運行」,則您需要CreateRemoteThread()。這是相當先進的,難以調試,因爲你的錯誤使其他程序崩潰。順便說一下,這就是很多惡意軟件的工作原理。

如果您的意思是「讓我的DLL在其他進程中得到活動通知」,您需要SetWindowsHookEx()

0

聲音就像你希望一旦應用程序啓動時注入?你可以通過微軟的Detours DetourCreateProcessWithDll()來做到這一點。示例here