1. 程式人生 > >VC++ DLL注入目標程式

VC++ DLL注入目標程式

向其他程式注入DLL的原理比較簡單
就是呼叫幾個windowsAPI,在目標程式中開啟一個執行緒,在這個執行緒中載入動態庫,動態庫被載入時會執行初始化的函式,我們就可以在這個初始化函式中對目標程式做任何想做的事情。。。或者讓目標程式代替你的程式做一些事情。。
當目標程式注入DLL後,這個負責注入的程式就可以關閉了。


下面是一個簡單的函式,傳入目標程式的控制代碼和要注入的動態庫的全路徑。

void InjectDLL(HANDLEhProcessPCWSTRdllFilePathName)

{

int cch = 1 + lstrlenW(dllFilePathName);

int cb = cch * sizeof(wchar_t);

PWSTR

 PszLibFileRemote = (PWSTR)VirtualAllocEx(hProcessNULL, cb, MEM_COMMITPAGE_READWRITE);

WriteProcessMemory(hProcess, PszLibFileRemote, (PVOID)dllFilePathName, cb, NULL);

HANDLE hThread = CreateRemoteThread(hProcessNULL, 0, (PTHREAD_START_ROUTINE)LoadLibrary, PszLibFileRemote, 0, NULL);

WaitForSingleObject(hThread, 

INFINITE);

}


目標程式控制代碼hProcess獲取方法: