小编Eli*_*ton的帖子

复制内存中的函数并执行它

我想知道在C中如何将一个函数的内容复制到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);
Run Code Online (Sandbox Code Playgroud)

谢谢你的回答

c memory copy execute

6
推荐指数
1
解决办法
7606
查看次数

标签 统计

c ×1

copy ×1

execute ×1

memory ×1