A
Unter Windows könnte man folgendes machen (siehe Beiträge hier http://www.c-plusplus.net/forum/249829-full):
abc.w schrieb:
@AntonWert: Das geht ungefähr in drei-vier Schritten, Speicher allokieren (1), Deine Daten, die ja ausführbaren Code darstellen, rüberkopieren (2), den Speicherbereich als ausführbar "einstellen" und Funktionspointer darauf (3) setzen:
{
void (*my_func)(void) = NULL;
void *pMem = NULL;
void *pDeineDaten = NULL;
DWORD ManyBytes = 4096;
DWORD OldProtect = 0;
... /* pDeineDaten mit Daten füllen */
pMem = VirtualAlloc(NULL, ManyBytes, MEM_COMMIT, PAGE_READWRITE);
memcpy(pMem, pDeineDaten, ManyBytes);
VirtualProtect(pMem, ManyBytes, PAGE_EXECUTE, &OldProtect);
my_func = (void (*)(void))pMem;
my_func();
}
Viel Glück beim Debuggen!
Immer noch aktuell: Viel Glück beim Debuggen!