... eine funktion im prozess mit CreateRemoteThread auszuführen (also das an sich schon), nur eben dass man eine struct erstellt, die den gleichen aufbau des normalen call stacks hat?
und könnte man wenn der thread durch is, mit GetThreadContext den return wert aus EAX auslesen?
pseudo code:
wenn ich da nich schon genügend fehler drin habe XD (parameter bei VirtualAllocEx sind mit absicht weg ;));
und könnte man wenn der thread durch is, mit GetThreadContext den return wert aus EAX auslesen?
pseudo code:
Code:
struct stackrip
{
DWORD ptr1;
DWORD ptr2;
}
...
stackrip x;
x.ptr1 = (DWORD)VirtualAllocEx(...);
x.ptr2 = (DWORD)VirtualAllocEx(...);
LPVOID lpX = VirtualAllocEx(/*sizeof(x) zum lesen/schreiben freigeben*/);
WriteProcessMemory(/*x an lpX schreiben*/);
HANDLE hThread = CreateRemoteThread(hProc,0,0,(LPTHREAD_START_ROUTINE)0xDEADBEEF,lpX,0,0);
WaitForSingleObject(hThread,INFINITE);
CONTEXT ctx;
GetThreadContext(hThread,&ctx);
DWORD ret_urn = ctx.Eax;