簡體   English   中英

C ++ Dll Injection

[英]C++ Dll Injection

我非常感謝你的幫助。

我一直試圖將Dll注入遠程進程並在其中進行一些更改,我現在遇到的問題是我不知道如何實現這一目標。

首先,這是我迄今為止開發的代碼片段:
dllmain.cpp

#include <windows.h>
#include <stdio.h>

BOOL APIENTRY DllMain (HINSTANCE hInst     /* Library instance handle. */ ,
                       DWORD reason        /* Reason this function is being called. */ ,
                       LPVOID reserved     /* Not used. */ )
{
switch (reason)
    {
      case DLL_PROCESS_ATTACH:
           MessageBox (0, "From DLL\n", "Process Attach", MB_ICONINFORMATION);
        break;

      case DLL_PROCESS_DETACH:
           MessageBox (0, "From DLL\n", "Process Detach", MB_ICONINFORMATION);
        break;

      case DLL_THREAD_ATTACH:
           MessageBox (0, "From DLL\n", "Thread Attach", MB_ICONINFORMATION);
        break;

      case DLL_THREAD_DETACH:
           MessageBox (0, "From DLL\n", "Thread Detach", MB_ICONINFORMATION);
        break;
    }  

    return TRUE;
}

它只是根據它遇到的條件顯示一個消息框。 現在我想要我的Dll做的是,在注入遠程進程后,我希望它寫一個內存位置並改變它的值。

數據類型:Unsigned Short Int
內存位置:0041D090

我希望一切都清楚,感謝您的耐心等待,感謝您的幫助。

您不必編寫DLL來在固定地址更改另一個進程的內存。 您可以使用WriteProcessMemory()

但是......將DLL注入另一個進程的方法如下......

  1. 使用VirtualAllocEx()在目標進程的內存中分配DLL的文件路徑長度......這就像遠程執行malloc

  2. 使用WriteProcessMemory()將DLL的文件路徑復制到上一步返回的內容中。 這就像遠程做strcpy

  3. 使用CreateRemoteThread() 您可以將它指向LoadLibrary()作為入口點,將步驟1和2中的文件路徑指定為參數。 說實話,這有點笨拙,但是如果你注射了一個DLL,你就已經非常hacky了。 另一種技術是使用步驟1和2將一些機器代碼加載到遠程過程中並將其指向該過程。

請記住,這種技術是破壞目標進程穩定性的好方法。 特別是,這不是我在最終被運送給他人的產品中所做的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM