构造一个缓冲区溢出的C语言的例子,并调试它,使得溢出时EIP的地址为:0x41424344
发布网友
发布时间:2022-04-23 08:00
我来回答
共3个回答
懂视网
时间:2022-04-23 12:22
之前经常写运动函数,要写好多好多,后来想办法封装起来。(运动缓冲)。本文主要和大家介绍了JS实现运动缓冲效果的封装函数,涉及JavaScript时间函数与数值运算相关操作技巧,需要的朋友可以参考下,希望能帮助到大家。
以上封装函数也可以用于单个属性,多样式运动,比如:
就这样。
热心网友
时间:2022-04-23 09:30
有意思的“错误” 。看注解吧,太详细解释我也说不清楚,可以探讨一下
void test(void) //这个是增加的“错误调用的显示函数”
{
printf("有意思的溢出");
}
void function(char *str)
{
char buffer[16];
strcpy(buffer, str);
}
int main(int argc, char *argv[])
{
int i,p;
void (*pf)(void) = test; //pf 取得test()函数的地址 或者直接得到整数地址也可以
p = (int)pf; //p 保存test()函数的地址
char string[128];
for (i=0;i<127;i++)
{
string[i] = i+1; //原程序故意误导人,换成i+1后看错误提示一下子就知道从第几个字节溢出的了
}
string[127] = '\0';
string[28] = (char)p; //将显示函数地址写入溢出的地方
string[29] = (char)(p>>8);
string[30] = (char)(p>>16);
string[31] = (char)(p>>24);
printf("add of string is : 0x%x\n",&string);
printf("add of test() is : 0x%x\n",p);
function(string);
printf("This is a test!\n");
system("PAUSE");
return 0;
}
热心网友
时间:2022-04-23 10:48
#include "stdafx.h"
#include "stdio.h"
#include "string.h"
void function(char *str)
{
char buffer[16];
strcpy(buffer, str);
}
int main(int argc, char* argv[])
{
int i;
char string[128];
for (i=0;i<127;i++)
string[i] = 'A';
string[127] = '\0';
i=20;//esp
string[i++] = 0x44;
string[i++] = 0x43;
string[i++] = 0x42;
string[i++] = 0x41;
string[i++] = 0;
printf("This is a test!\n");
function(string);
return 0;
}