首先简要回顾一下缓冲区溢出的攻击大系: ◆栈溢出(stack smashing) 未检查输入缓冲区长度,导致数组越界,覆盖栈中局部变量空间之上的栈桢指针%ebp以及函数返回地址retaddr,当函数返回执行ret指令时,retaddr从栈中弹出,作为下一条指令的地址赋给%eip寄存器,继而改变原程序 ...
分类:
其他好文 时间:
2020-02-23 22:35:56
阅读次数:
91
程序在遇到问题无法继续执行时,会 告知开发/用户。开发需要做的事情就是,在开发过程中,尽量减少异常发生的可能,同时完成异常捕获,保证丑陋的异常不会直面用户。 同时,异常内容也是调试过程中非常重要的讯息。 打断点调试 调试的目的是检验我们的代码是否有问题,代码是否按照我们的想法在正确的执行。 打断点调 ...
Exception: 所有异常对象的基类。 SystemException:运行时产生的所有错误的基类。 IndexOutOfRangeException:当一个数组的下标超出范围时运行时引发。 NullReferenceException:当一个空对象被引用时运行时引发。 InvalidOpera ...
分类:
编程语言 时间:
2020-02-13 19:32:00
阅读次数:
101
今天只完成了第四个实验的第2题,这也是一下午的结果,今天一下午彻底自闭了,程序总是出错,并且错误还一直解决不了。今天效率低的原因是一直报数组越界的错误,可是怎么看数据文件都没有错误。最后的最后,也就是刚才,无奈之下将文件重新写了一遍,这样结果才终于对了。 第二题实验内容: 2.编写独立应用程序实现数 ...
分类:
其他好文 时间:
2020-02-05 18:53:54
阅读次数:
88
通常情况下在C语言中我们定义一个大小为5的数组是这样的: 这五个数字对应的下标是 ,当我们想访问数组中第一个数字时,通常会使用 的形式去访问,但是,如果我们使用 来对超过数组大小的地方进行赋值,会发生什么? 编译之后,发现编译器并没有报错,也没有警告,但是我们知道,这里其实已经发生了数组越界问题。 ...
分类:
编程语言 时间:
2020-01-31 15:43:12
阅读次数:
84
动态内存分配 new运算符 new 运算符是实现动态内存分配的一种方式。 第一种用法 分配给一个变量动态内存空间 格式 其中T是任意类型名,P是类型为T 的指针 含义:动态分配出一片大小为 字节的内存空间,并且将该内存空间的起始地址赋值给P。 例: 第二种用法 分配给一个数组动态内存空间 格式 其中 ...
分类:
编程语言 时间:
2020-01-30 22:34:35
阅读次数:
67
1、基础用法 2、方法中加合法校验,告知方法的调用者 数组越界判断 3、一切皆为对象,创建的是运行期对象,则可以不处理(throws/try catch),直接交给JVM处理(打印并终止程序) 4、 ...
分类:
其他好文 时间:
2020-01-30 14:17:19
阅读次数:
43
问答题 1. 一些字符串函数,如strcpy等,使用时没有对输入数据长度等进行合法性检测,容易造成缓冲区溢出,被黑客利用; 因为else总是与最近的if配对,如果不能熟练使用,else有时难以表达原意,产生错误; 数组越界不会报错,比较难发现; 指针对于初学者来说容易出错,可能会访问非法内存,造成数 ...
分类:
其他好文 时间:
2020-01-29 10:37:48
阅读次数:
92
1、本书的目的 告诉你如何高效运用C++,使你的软件易理解、易维护、可移植、可扩充、高效、并且有着你预期的行为。如果任何时间都遵守每一条准则,不太可能掉入C++常见的陷阱中。 2、一些术语 声明式:告诉编译器某个东西的名称和类型,但是略去细节。(例如:对象、函数、类、模板声明式) 签名式:指的是函数 ...
分类:
其他好文 时间:
2020-01-27 19:25:39
阅读次数:
60
C语言的缺点 记忆困难 由于运算符和运算优先级过多(~~比如什么单目运算符一直都搞不清楚只能在每次可能用到时去百度~~),不便于记忆,语法定义不严格,编程自由度大,对于像我这种初次接触编程的freshman确实是有些困难,有时候代码太长,自己总是看不懂~~我是不会承认我比较笨的~~。 查错困难 比如 ...
分类:
编程语言 时间:
2020-01-25 20:40:28
阅读次数:
99