Extern zu hooken geht nicht, du musst schon im Speicherbereich sein.
Wie Metin2Spieler97 bereits geschrieben hat, musst du dafür halt deine Funktion in den anderen Prozess reinbringen und dann über Read-/WriteProcessMemory hooken, was sich allerdings nur lohnt, wenn der Hook nicht zu komplex ist, andererseits würde man dann nämlich besser eine Dll benutzen
Ich kann dir später mal einen kleinen Beispielcode schreiben, wobei es für dich wohl am einfachsten wäre, einfach eine Dll zu schreiben und die Detours Library zu benutzen.
Nämlich selbst, wenn du den Code des Zielprozesses über WriteProcessMemory praktisch von außen bearbeitest, lässt sich die Veränderung wie auch bei einer injizierten Dll, die einen Hook installiert, vom Zielprozess erkennen, falls es dir um so etwas gehen sollte.
Zu VirtualAllocEx:
"If lpAddress is NULL, the function determines where to allocate the region."
also einfach Null verwenden, irgendwo alloziieren lassen und dann über den Rückgabewert den alloziierten Speicher ansprechen.
dwSize ist die Anzahl der Bytes, die alloziiert werden sollen, sprich die Größe deiner Funktion, die du über die Subtraktion von Labels herausfinden kannst (teilweise inakurrat wegen Padding, ob 10 Bytes mehr oder weniger macht aber eigentlich keinen Unterschied)
Code:
int x()
{
int a=2,b=3;
return a*b;
}
__declspec(naked) void y()
{
}
int sizeofx=@y-@x
irgendwie so