windows平臺實現dll遠程注入的簡單例子

最新看了下關於dll遠程注入的東西,這個技術原來是用來隱藏***很好的方式,如今貌似很難經過了,通常的殺軟都能檢測到相關的行爲,windows

// 一個dll的代碼,隨便加了一個messagebox函數,僅用來測試注入時候成功的,注入成功會彈出這個對話框ide

  
  
  
  
  1. #include "stdafx.h"  
  2. #include <stdio.h>  
  3.  
  4. BOOL APIENTRY DllMain( HANDLE hModule,   
  5.                        DWORD  ul_reason_for_call,   
  6.                        LPVOID lpReserved  
  7.                      )  
  8. {  
  9.     MessageBoxA(NULL,"hello world","dll",MB_OK);      
  10.     return TRUE;  

// dll遠程注入的代碼,我這裏是手動輸入一個進程的pid的,其實也能夠經過快照方式來固定一個進程進行注入函數

  
  
  
  
  1. #include <windows.h>  
  2.  
  3.  
  4. int  main ()  
  5. {  
  6.     DWORD  pid =  2324;  
  7.     LPVOID pAddress = 0;  
  8.     char *dllpath = "C:\\Documents and Settings\\All Users\\桌面\\dll\\Debug\\dll.dll";  
  9.     int dwSize = lstrlen(dllpath) + 1;  
  10.     DWORD  write = 0;  
  11.     BOOL bRet  = FALSE;  
  12.     HANDLE hThread  = 0;  
  13.     DWORD dwthread = 0;  
  14.  
  15.     PTHREAD_START_ROUTINE pfnThreadRtn = (PTHREAD_START_ROUTINE) GetProcAddress(GetModuleHandle(TEXT("kernel32")),"LoadLibraryA");  
  16.       
  17.     HANDLE  hPid = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);  
  18.  
  19.     if ( NULL == hPid )  
  20.     {  
  21.         CloseHandle(hPid);  
  22.     }  
  23.  
  24.     pAddress = VirtualAllocEx( hPid,0,0x1000,MEM_COMMIT,PAGE_EXECUTE_READWRITE);  
  25.  
  26.     if ( NULL == pAddress)  
  27.     {  
  28.         VirtualFreeEx(hPid,pAddress,0x1000,MEM_RELEASE);  
  29.         CloseHandle(hPid);  
  30.     }  
  31.  
  32.      bRet  = WriteProcessMemory(hPid,pAddress,dllpath,dwSize,&write);  
  33.  
  34.     if ( FALSE == bRet )  
  35.     {  
  36.         VirtualFreeEx(hPid,pAddress,0x1000,MEM_RELEASE);  
  37.         CloseHandle(hPid);  
  38.     }  
  39.  
  40.     hThread = CreateRemoteThread(hPid,NULL,0,pfnThreadRtn,pAddress,0,&dwthread);  
  41.  
  42.     if ( NULL == hThread)  
  43.     {  
  44.         VirtualFreeEx(hPid,pAddress,0x1000,MEM_RELEASE);  
  45.         CloseHandle(hPid);  
  46.     }  
  47.  
  48.     return 0;     
相關文章
相關標籤/搜索