Скопируйте функцию в память и выполните ее

Я хотел бы знать, как в C in можно скопировать содержимое функции в memroy и выполнить его?

Я пытаюсь сделать что-то вроде этого:

typedef void(*FUN)(int *);
char * myNewFunc;

char *allocExecutablePages (int pages)
{
    template = (char *) valloc (getpagesize () * pages);
    if (mprotect (template, getpagesize (), 
          PROT_READ|PROT_EXEC|PROT_WRITE) == -1) {
        perror ("mprotect");
    } 
}

void f1 (int *v) {
    *v = 10;
}

// allocate enough spcae but how much ??
myNewFunc = allocExecutablePages(...)

/* Copy f1 somewere else
 * (how? assume that i know the size of f1 having done a (nm -S foo.o))
 */

((FUN)template)(&val);
printf("%i",val);

Спасибо за ваш ответы

6
задан Elinghton 28 December 2010 в 12:51
поделиться