4
假設我想將一個DLL注入一個想要每隔250毫秒編輯地址A值的進程。我需要使用DllMain,對吧?問題是我不允許在DllMain中等待。所以我將不得不創建一個線程?或者是否沒有繞過限制?我會如何去做這件事?DLL注入的最佳實踐?
另外,使用DLL注入來編輯應用程序的內存使用EXE有什麼好處嗎?
另外,CreateThread中的堆棧大小應該是多少?如果它太小或太大會怎樣?我如何知道我需要多少?
假設我想將一個DLL注入一個想要每隔250毫秒編輯地址A值的進程。我需要使用DllMain,對吧?問題是我不允許在DllMain中等待。所以我將不得不創建一個線程?或者是否沒有繞過限制?我會如何去做這件事?DLL注入的最佳實踐?
另外,使用DLL注入來編輯應用程序的內存使用EXE有什麼好處嗎?
另外,CreateThread中的堆棧大小應該是多少?如果它太小或太大會怎樣?我如何知道我需要多少?
從您的描述看來,您已經知道如何讓目標進程加載您的DLL。如果我的假設是正確的,那麼答案很簡單:從DLLMain創建一個線程並在線程中實現您的邏輯。只要你的代碼遵守下面列出的規則,你應該沒問題。
這個document描述了DLLMain能做什麼和不能做什麼以及爲什麼。
如記錄,你永遠不應該從內部的DllMain執行下列任務:
以下任務是安全的範圍內的DllMain執行:
你的第二個問題對我來說不太清楚。要將代碼注入到另一個進程中,您必須從某處(瀏覽器,exe或其他任何地方)啓動,然後寫入目標進程內存以加載您的DLL。