HOOK与注入
bool InjectDll(char* pDllPath, int nPid)
{
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, nPid);
if (!hProcess)
{
printf("进程句柄获取失败\n");
return false;
}
LPVOID lpBuf = VirtualAllocEx(hProcess, NULL,
strlen(pDllPath) + 1, MEM_COMMIT, PAGE_READWRITE);
DWORD dwWrite;
WriteProcessMemory(hProcess, lpBuf, pDllPath,
strlen(pDllPath) + 1, &dwWrite);
HANDLE hThread = CreateRemoteThread(hProcess, NULL, NULL,
(LPTHREAD_START_ROUTINE)LoadLibraryA, lpBuf, NULL, NULL);
WaitForSingleObject(hThread, -1);
VirtualFreeEx(hProcess, lpBuf, 0, MEM_RELEASE);
CloseHandle(hProcess);
return true;
}
------------------------------------------------------
bool InjectCode(char* pCode,int nSize, int nPid)
{
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, nPid);
if (!hProcess)
{
printf("进程句柄获取失败\n");
return false;
}
LPVOID lpBuf = VirtualAllocEx(hProcess, NULL,
nSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
DWORD dwWrite;
WriteProcessMemory(hProcess, lpBuf, pCode,
nSize, &dwWrite);
HANDLE hThread = CreateRemoteThread(hProcess, NULL, NULL,
(LPTHREAD_START_ROUTINE)lpBuf, NULL, NULL,