设为首页 加入收藏

TOP

C语言实现函数间jump的方法
2013-11-20 14:18:19 来源: 作者: 【 】 浏览:190
Tags:语言 实现 函数 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语言获取任意文件的长度 下一篇一个求整数开方的算法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: