点击这里给我发消息 点击这里给我发消息

fst.c源程序和snd.c源程序

添加时间:2013-12-7
    相关阅读: 程序 VC
         很有意思的两个程序哦,值得一试,两个程序都是先获得数据在堆栈中的位置,然后计算出堆栈中函数的返回地址,并修改为想跳转到的地址,虽然看起来形式不同,其实实质相同。值得注意的是,在堆栈中分配空间,保存函数返回地址等操作是依赖于特定的编译器的,即每种编译器实现的方式都不同,因此上述程序只在VC6下编译能成功运行,换做 Borland C 或其他编译器,程序就不能正确运行了。
一、fst.c源程序,在VC6下编译通过。
#include \"stdio.h\"
void overflow(int a,int b)
{
  char buffer1[8];
  int *ret;
  ret = (int *)(buffer1 + 12);
  (*ret)+=8;
}
void main()
{
  int num;
  num = 11111;
  overflow(1,2);
  num = 22222;
  __asm
  {
  add esp,0x8
  }
printf(\"%d\\n\",num);
}
二、snd.c源程序,在VC6下编译通过。
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
void say()
{
    puts(\"Hello world!\");
    exit(0);
}
int main()
{
    volatile int a = 0;
    volatile int * p = &a;
    *(p + 2) = (int)say;
    *(p + 3) = (int)say;
    return 0;
}
相关fst.c源程序和snd.c源程序

咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册