4
我有一個正在使用'Test.dll'的正在運行的進程。我想知道內存中Test.dll啓動的確切位置,但似乎無法完成。在C++中查找加載的DLL的內存地址
我的主要問題是我需要從這個DLL寫入偏移量,但是當我使用Read/WriteProcessMemory時,我無法準確輸入Test.dll +一些偏移量。
任何幫助將不勝感激。
我有一個正在使用'Test.dll'的正在運行的進程。我想知道內存中Test.dll啓動的確切位置,但似乎無法完成。在C++中查找加載的DLL的內存地址
我的主要問題是我需要從這個DLL寫入偏移量,但是當我使用Read/WriteProcessMemory時,我無法準確輸入Test.dll +一些偏移量。
任何幫助將不勝感激。
好的,所以一種方法是使用GetModuleHandle()
返回的值。是的,它會返回HANDLE
,但您可以將其轉換爲適當的指針類型。與Visual Studio的「模塊」窗口中的模塊地址範圍進行比較,您會看到它與該範圍的起始值相同。
更好的方法是使用GetModuleInformation()。您傳遞的MODULEINFO結構的第一個字段將包含DLL的基地址。
根據MODULEINFO的文檔雖然:
一個模塊的加載地址是一樣的HMODULE值。
所以我想只是使用HMODULE和鑄造是好的。無論你想做什麼,我想。
如果要獲取遠程進程的信息,請使用EnumProcessModules()。
查看GetModuleHandle,它會查找當前正在運行的進程中的模塊。如果我想在另一個過程中尋找它,該怎麼辦? GetModuleInformation確實有一個HANDLE輸入,但它也請求模塊句柄,這正是我試圖獲得的。 – Dororo 2010-08-12 22:53:45
使用EnumProcessModules()。請參閱編輯。 – 2010-08-12 23:01:32
使用EnumProcessModules得到它;你是明星,謝謝。 – Dororo 2010-08-12 23:40:15