15,471
社区成员
发帖
与我相关
我的任务
分享
BOOL WINAPI InjectDll32To64W(PPROCESS_INFORMATION pPI, LPCWSTR dll, LONGLONG funcAddr)
{
BOOL bRet = FALSE;
do
{
if(!funcAddr)
{
break;
}
SIZE_T dllLen = STR_LENW(dll);
if(!dllLen || dllLen > 250)
{
break;
}
SIZE_T len = (dllLen + 1) * sizeof(WCHAR);
void* remoteMem = VirtualAllocEx(pPI->hProcess, NULL, len, MEM_COMMIT, PAGE_READWRITE);
if(!remoteMem)
{
break;
}
SIZE_T writed = 0;
if(!WriteProcessMemory(pPI->hProcess, remoteMem, dll, len, &writed))
{
break;
}
HANDLE hThread = CreateRemoteThread(pPI->hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)funcAddr, remoteMem, 0, NULL);
if(!hThread)
{
char tmp[MAX_PATH] = {0};
sprintf(tmp, "创建远程线程失败,错误码: %d", GetLastError());
OutputDebugStringA(tmp);
break;
}
CloseHandle(hThread);
bRet = TRUE;
} while (FALSE);
return bRet;
}