C语言中实现不同函数间jump的方法

下面这种方法是从网上找的,未实际操作过,慎用

#include <stdio.h> 

int  somefunc( void *ptr) 

 printf("in somefunc... \n"); 
 return 0; 

void stackbuild( void *ptr) 

 printf("in stackbuild... \n"); 
 *(unsigned int*)(&ptr-1) ^= *(unsigned int*) &ptr; 
 *(unsigned int*)&ptr ^= *(unsigned int*) (&ptr-1);  //注意此处对堆栈操作 
 *(unsigned int*)(&ptr-1) ^= *(unsigned int*) &ptr; 

printf("exit stackbuild... \n");

int main(int argc, char *argv[]) 

 // 还是嵌入了一句汇编,平衡堆栈;)哪位高人改改,看能不能把嵌入汇编去掉 
 __asm{push 0} //预留4字节空间,平衡堆栈,注意此句和下面的句子要一起用,没有下面的调用,必须没有该语句 
 stackbuild(somefunc); 

 printf("exit main...\n "); 
 return 0; 
}

你可能感兴趣的:(C语言中实现不同函数间jump的方法)