sie kann eine funktion in den mainthread eines prozesse injizieren, und ausführen (gut geeignet um eine dll zu laden).
hier habt ihr den code (geschnitten):
Code:
__declspec(naked) void injStub()
{
__asm
{
push 0xDEADBEEF
pushfd
pushad
call 0xDEADBEEF
popad
popfd
ret
}
}
bool InjectCode(HANDLE hProc, HANDLE hThread, LPVOID lpCode, SIZE_T szCodeLen)
{
void* stub = VirtualAllocEx(hProc,NULL,sizeof(&injStub),MEM_COMMIT,PAGE_EXECUTE_READWRITE);
void* code = VirtualAllocEx(hProc,NULL,szCodeLen,MEM_COMMIT,PAGE_EXECUTE_READWRITE);
memcpy(stub,&injStub,sizeof(&injStub));
memcpy(code,lpCode,szCodeLen);
SuspendThread(hThread);
CONTEXT ctx;
ctx.ContextFlags = CONTEXT_CONTROL;
GetThreadContext(hThread,&ctx);
ctx.ContextFlags = CONTEXT_CONTROL;
DWORD oldEIP = ctx.Eip;
ctx.Eip = (DWORD)stub;
memcpy((void *)((DWORD)stub+1),&oldEIP,4);
memcpy((void *)((DWORD)stub+8),code,4);
SetThreadContext(hThread,&ctx);
ResumeThread(hThread);
CloseHandle(hThread);
CloseHandle(hProc);
return true;
}






