VC++ DLL注入目標程式
阿新 • • 發佈:2019-02-12
向其他程式注入DLL的原理比較簡單
就是呼叫幾個windowsAPI,在目標程式中開啟一個執行緒,在這個執行緒中載入動態庫,動態庫被載入時會執行初始化的函式,我們就可以在這個初始化函式中對目標程式做任何想做的事情。。。或者讓目標程式代替你的程式做一些事情。。
當目標程式注入DLL後,這個負責注入的程式就可以關閉了。
PszLibFileRemote = (PWSTR)VirtualAllocEx(hProcess, NULL, cb, MEM_COMMIT, PAGE_READWRITE); INFINITE);
就是呼叫幾個windowsAPI,在目標程式中開啟一個執行緒,在這個執行緒中載入動態庫,動態庫被載入時會執行初始化的函式,我們就可以在這個初始化函式中對目標程式做任何想做的事情。。。或者讓目標程式代替你的程式做一些事情。。
當目標程式注入DLL後,這個負責注入的程式就可以關閉了。
下面是一個簡單的函式,傳入目標程式的控制代碼和要注入的動態庫的全路徑。
void InjectDLL(HANDLEhProcess, PCWSTRdllFilePathName)
{
int cch = 1 + lstrlenW(dllFilePathName);
int cb = cch * sizeof(wchar_t);
PWSTR
WriteProcessMemory(hProcess, PszLibFileRemote, (PVOID)dllFilePathName, cb, NULL);
HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0, (PTHREAD_START_ROUTINE)LoadLibrary, PszLibFileRemote, 0, NULL);
WaitForSingleObject(hThread,
}
目標程式控制代碼hProcess獲取方法: