安全程序设计实验报告_第1页
安全程序设计实验报告_第2页
安全程序设计实验报告_第3页
安全程序设计实验报告_第4页
安全程序设计实验报告_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验报告课程名称: 学 院: 姓 名: 班 级: 学 号: 年 月 日l 实验一:缓冲区溢出安全问题一:什么是缓冲区溢出:缓冲区溢出是指当计算机向缓冲区内填充数据时超过了缓冲区本身的容量而溢出;某些情况下,溢出的数据只是覆盖在一些不重要的的内存空间上,不会产生严重后果;但是一旦溢出的数据覆盖在合法数据上,可能会给系统带来巨大的危害。实验程序:运行调试缓冲区溢出p02_03.c,p02_04.c,p02_05.c,p02_06.c二:实验步骤:1:打开microsoft visual studio 6.0 选择microsoft visual c+file-new projects win32

2、console application(项目名称p0203)file-new-files - c+ source file编辑程序:#include#includevoid function(char *input)char buffer10;strcpy(buffer,input);printf(call fun1,buffer= %sn,buffer);int main(int argc,char *argv)function(argv1);return 0;build compile p0203.cpp- build p02.exe查找到工程所在地址例如d:p02.exe2:开始-运行-

3、cmd-输入d:(进入d盘)-输入cd p02debug(进入生成exe所在文件)输入“p02 security”会显示:输入“p02 abcdefghijklmnopqrstuvwxyz1234567890”弹出应用程序错误警示框,提示为3:将代码修改为:#include#includevoid fun1(char *input)char buffer10;strcpy(buffer,input);printf(call fun1,buffer= %sn,buffer);void fun2()printf(call fun2);int main(int argc,char *argv)pri

4、ntf(address of fun2= %pn,fun2);fun1(argv1);return 0;输入“p02 abcde”显示:输入“p02 abcdefghijklmnopqrstuvwxyz1234567890”弹出应用程序错误警示框,提示为4:代码修改为:#include#includevoid fun1(char *input)char buffer10;strcpy(buffer,input);printf(call fun1,buffer= %sn,buffer);void fun2()printf(call fun2);int main(int argc,char *ar

5、gv)printf(address of fun2= %pn,fun2);fun1(abcdefghijklmnopqrstuvwxyz12x05x10x40);return 0;直接调用程序,无法像书中所说可以调用fun2函数,因为找不到下一个buffer区的入口5:指令通用跳转地址为0x7ffa4512#include#includevoid fun1(char *input)char buffer10;strcpy(buffer,input);printf(call fun1,buffer=%sn,buffer);int main(int argc,char *argv)char buf

6、fer=abcdefghijklmnopqrstuvwxzy12x12x45xfax7fx55x8bxecx33xc0x50x50xc6x45xf4x4dxc6x45xf5x53xc6x45xf6x56xc6x45xf7x43xc6x45xf8x52xc6x45xf9x54xc6x45xfax2exc6x45xfbx44xc6x45xfcx4cxc6x45xfdx4cxbax77x1dx80x7cx52x8dx45xf4x50xffx55xf0x55x8bxecx83xecx2cxb8x63x6fx6dx6dx89x45xf4xb8x61x6ex64x2ex89x45xf8xb8x63x6fx

7、6dx22x89x45xfcx33xd2x88x55xffx8dx45xf4x50xb8xc7x93xbfx77xffxd0x83xc4x12x5d;fun1(buffer);return 0;运行程序,并不能像书中所说调出一个控制台命令窗口,因为实验室所装操作系统的缘故。理论上应该能行的通。l 实验二:整数溢出问题1:2:3:4:5:l 实验三:线程同步安全与协作安全问题1:2:注意:刷新控制台,会有多种结果输出:3:4:5:6:7:l 实验四:线程死锁与控制安全问题1:2:3:import java.awt.*;import java.awt.event.*;public class p0

8、312 extends frame implements actionlistener,runnableprivate button btn=new button(暂停);private thread th=new thread(this);public p0312()this.add(btn);this.pack();btn.addactionlistener(this);this.setvisible(true);th.start();public void run() while(true)system.out.println(welcome);trythread.sleep(1000)

9、;catch(exception e)public void actionperformed(actionevent e) if(btn.getlabel().equals(打印)th.resume();btn.setlabel(暂停);elseth.suspend();btn.setlabel(打印);public static void main(string args)new p0312();运行效果为:4:import java.awt.*;import java.awt.event.*;public class p0313 extends frame implements actio

10、nlistener,runnableprivate button btn=new button(暂停);private thread th=new thread(this);private boolean run=true;public p0313()this.add(btn);this.pack();btn.addactionlistener(this);this.setvisible(true);th.start();public void run() while(run)system.out.println(welcome);trythread.sleep(1000);catch(exc

11、eption e)public void actionperformed(actionevent e) if(btn.getlabel().equals(打印)th=new thread(this);this.run=true;th.start();btn.setlabel(暂停);elsethis.run=false;th=null;/ null不能为大写btn.setlabel(打印); public static void main(string args) new p0313();l 实验五:异常/错误处理中的安全问题1:try-catch-finally结构import java.i

12、o.*;/引进java处理io异常的包public class p0402 public static void main(string args) tryinputstreamreader isr=new inputstreamreader(system.in);bufferedreader br=new bufferedreader(isr);system.out.println(请您输入一个数字:);string str=br.readline();double numer=double.parsedouble(str);double result=numer*numer;system.

13、out.println(结果是:+result);catch(numberformatexception ex)system.out.println(对不起,您输入的格式错误!);catch(ioexception ex)system.out.println(对不起,io异常!);catch(exception ex)system.out.println(对不起,程序异常!);finallysystem.out.println(程序运行完毕!);输入12o,程序运行结果为:2:fianlly块import java.io.*;/引进java处理io异常的包public class p0403

14、public static void main(string args) tryinputstreamreader isr=new inputstreamreader(system.in);bufferedreader br=new bufferedreader(isr);system.out.println(请您输入一个数字:);string str=br.readline();double numer=double.parsedouble(str);double result=numer*numer;system.out.println(结果是:+result);catch(excepti

15、on ex)system.out.println(对不起,程序异常!);/无论捕获到什么异常,都会执行fianlly块finallysystem.out.println(程序运行完毕!); 此处将程序改为:import java.io.*;/引进java处理io异常的包public class p0404 public static void main(string args) tryinputstreamreader isr=new inputstreamreader(system.in);bufferedreader br=new bufferedreader(isr);system.out.println(请您输入一个数字:);string str=br.readline();double numer=double.parsedouble(str);double result=numer*numer;system.out.println(结果是:+result);catch(exception ex)system.out.println(对不起,程序异常!);/*与p0403相比,此处没有使用finally, * 但是finally的特点就是:在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论