由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 面试题:debug: 函数return to a wrong place
相关主题
请教个C++问题pointer overflow
跟你们科班的差太远了弱问内存的问题
c++的问题这个函数有问题吗?
一道很奇怪的面试题关于buffer overflow
请问关于函数的局部变量那些用buffer overflow来attack的人是怎么计算出要覆盖的内存地址的阿?
Dynamic programming和backtracking有什么区别吗C++现在写起来真舒服啊
multi-thread 一问,请教VC2003 debug问题
急问高手一个问题:问个char*的问题
相关话题的讨论汇总
话题: 函数话题: place话题: return话题: 面试题话题: debug
进入Programming版参与讨论
1 (共1页)
p*****y
发帖数: 1049
1
面试题:在debug 的时候,发现函数return to a “wild” place
这是什么原因?
w***g
发帖数: 5958
2
缓冲溢出呗,黑客攻击的基本手段。

【在 p*****y 的大作中提到】
: 面试题:在debug 的时候,发现函数return to a “wild” place
: 这是什么原因?

d****n
发帖数: 1637
3
uninitialized value ?
int fun(){
int i;
//no operations on i here.
return i;
}

【在 p*****y 的大作中提到】
: 面试题:在debug 的时候,发现函数return to a “wild” place
: 这是什么原因?

p*****y
发帖数: 1049
4
请教什么叫缓冲溢出 ?
英语是什么?

【在 w***g 的大作中提到】
: 缓冲溢出呗,黑客攻击的基本手段。
S******n
发帖数: 489
5
buffer overflow?

【在 p*****y 的大作中提到】
: 请教什么叫缓冲溢出 ?
: 英语是什么?

p*****y
发帖数: 1049
6
请问为什么buffer overflow 之后 函数会返回到wild place?
p*****y
发帖数: 1049
7
请问为什么buffer overflow 之后 函数会返回到wild place?
p*****y
发帖数: 1049
8
这样说对吗?
If a function has larger input than the stack size, then the other memory of
other functions might be overwritten. If the overwritten memory contains
the return address of some functions, then the function will return to a
wild place, a place that hacker guides you to.

【在 w***g 的大作中提到】
: 缓冲溢出呗,黑客攻击的基本手段。
w***g
发帖数: 5958
9
这个问题之所以会发生,本质上是因为编译器设计的时候决定了堆栈地址是往下长的。
函数运行的时候堆栈结构是像下面这样的:
高地址
[返回地址]
[局部变量A]
[局部变量B]
[局部变量C]
....
....
[栈顶]
低地址
调用函数的时候就往栈顶压入返回地址,然后再压入局部变量,等函数结束的时候取出
返回地址,然后把栈顶调整到函数未开始时的地址。
如果局部变量B是一个数组,那么你让数组越界(buffer overflow)后就会把高地址存的
返回地址覆盖掉,然后函数返回的时候就会跳到一个随机的地方了。实际情况往往比这
个复杂的多,比如C/C++很少会把buffer分配在堆栈(stack)上,而是一般都分配在堆(
heap)上。这时候数组越界能越到堆栈上的返回地址的可能性就会减少,所以越界就得
越的相当多才行。对于古老的系统,甚至可以越界到指令内存,用恶意指令把程序本身
都覆盖了。

【在 p*****y 的大作中提到】
: 请问为什么buffer overflow 之后 函数会返回到wild place?
p*****y
发帖数: 1049
10
非常感谢 牛人
请问这些内容属于什么范畴?C/C++编程里面没有这些东西,是不是属于操作系统范畴?

【在 w***g 的大作中提到】
: 这个问题之所以会发生,本质上是因为编译器设计的时候决定了堆栈地址是往下长的。
: 函数运行的时候堆栈结构是像下面这样的:
: 高地址
: [返回地址]
: [局部变量A]
: [局部变量B]
: [局部变量C]
: ....
: ....
: [栈顶]

相关主题
Dynamic programming和backtracking有什么区别吗pointer overflow
multi-thread 一问,弱问内存的问题
急问高手一个问题:这个函数有问题吗?
进入Programming版参与讨论
D*******a
发帖数: 3688
11
assembly

畴?

【在 p*****y 的大作中提到】
: 非常感谢 牛人
: 请问这些内容属于什么范畴?C/C++编程里面没有这些东西,是不是属于操作系统范畴?

b***i
发帖数: 3043
12
stack over flow

【在 p*****y 的大作中提到】
: 面试题:在debug 的时候,发现函数return to a “wild” place
: 这是什么原因?

w***g
发帖数: 5958
13
stack overflow是另外一回事。stack overflow以后函数都不会返回了。

【在 b***i 的大作中提到】
: stack over flow
b***i
发帖数: 3043
14
假设单片机有16个字节的堆栈,然后函数f, g, h, k,i互相调用,假设调用了17次,那
么返回的时候,
最开始的f地址被最后的函数地址覆盖,返回的时候不就回到错误的地方了?

【在 w***g 的大作中提到】
: stack overflow是另外一回事。stack overflow以后函数都不会返回了。
w***g
发帖数: 5958
15
有道理。

【在 b***i 的大作中提到】
: 假设单片机有16个字节的堆栈,然后函数f, g, h, k,i互相调用,假设调用了17次,那
: 么返回的时候,
: 最开始的f地址被最后的函数地址覆盖,返回的时候不就回到错误的地方了?

1 (共1页)
进入Programming版参与讨论
相关主题
问个char*的问题请问关于函数的局部变量
[合集] matlab函数的返回变量Dynamic programming和backtracking有什么区别吗
大家帮我看看C文件输入函数fprintf的问题multi-thread 一问,
一道关于数据结构的面试题 (转载)急问高手一个问题:
请教个C++问题pointer overflow
跟你们科班的差太远了弱问内存的问题
c++的问题这个函数有问题吗?
一道很奇怪的面试题关于buffer overflow
相关话题的讨论汇总
话题: 函数话题: place话题: return话题: 面试题话题: debug