飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3575|回复: 5

[求助] 一些困饶菜鸟的问题

[复制链接]

该用户从未签到

发表于 2008-4-28 15:28:48 | 显示全部楼层 |阅读模式
50飘云币
1.堆栈的栈顶为什么向低地址上移?

2.OD反汇编中push byte ptr ss:[ebp+4]这句中,既然windows是4GB平坦的空间,为什么还有ss堆栈段?


3.OD中的F4原理是甚么?是不是相当于F2+F9?


4.大家都说的程序跑飞到底是什么概念,能不能讲解下本质

[ 本帖最后由 goop 于 2008-4-30 21:04 编辑 ]

最佳答案

查看完整内容

1.这个建议楼主看下硬件原理部分 当初堆栈设计时就是这样的:loveliness: 2.这个不懂/:L 3.这个应该是在你点的那条代码上OD添加了中断 类似像楼主说的F2+F9 4.程序跑飞我的理解是没有到达你想要的地方 相当与是跳过去了了 那你分析起来就比较麻烦了
PYG19周年生日快乐!

该用户从未签到

发表于 2008-4-28 15:28:49 | 显示全部楼层
1.这个建议楼主看下硬件原理部分 当初堆栈设计时就是这样的:loveliness:
2.这个不懂/:L
3.这个应该是在你点的那条代码上OD添加了中断 类似像楼主说的F2+F9
4.程序跑飞我的理解是没有到达你想要的地方 相当与是跳过去了了 那你分析起来就比较麻烦了
PYG19周年生日快乐!
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2008-5-1 15:22:02 | 显示全部楼层
这么多天,只有一人回应,谢谢了

我也看了点东西

1.可能就是CPU厂家默认规则

2.好像确是OD是这样处理的

3.多谢楼主

4.还在模糊中.........
PYG19周年生日快乐!
回复

使用道具 举报

该用户从未签到

发表于 2008-5-1 19:11:02 | 显示全部楼层
跑飞
/:012  不就是运行起来了么。。。
PYG19周年生日快乐!
回复

使用道具 举报

该用户从未签到

发表于 2008-5-1 19:34:13 | 显示全部楼层
1.堆栈的栈顶为什么向低地址上移?
CPU实现指令 PUSH和POP, 向堆栈中添加元素和从中移去元素。 堆栈由逻辑堆栈帧组成。 当调用函数时逻辑堆栈帧被压入栈中, 当函数返回时逻辑 堆栈帧被从栈中弹出。 堆栈帧包括函数的参数, 函数地局部变量, 以及恢复前一个堆栈 帧所需要的数据, 其中包括在函数调用时指令指针(IP)的值。 堆栈既可以向下增长(向内存低地址)也可以向上增长, 这依赖于具体的实现。

2.OD反汇编中push byte ptr ss:[ebp+4]这句中,既然windows是4GB平坦的空间,为什么还有ss堆栈段?
    没有用到ss和sp,pop,push,但还是定义了堆栈段,并开辟了一定的存储空间。
    Windows 把每一个 Win32 应用程序放到分开的虚拟地址空间中去运行,也就是说每一个应用程序都拥有其相互独立的 4GB 地址空间,当然这倒不是说它们都拥有 4GB 的物理地址空间,而只是说能够在 4GB 的范围内寻址。操作系统将会在应用程序运行时完成 4GB 的虚拟地址和物理内存地址间的转换。这就要求编写应用程序时必须格守 Windows 的规范,否则极易引起内存的保护模式错误。而过去的 Win16 内存模式下,所有的应用程序都运行于同一个 4GB 地址空间,它们可以彼此"看"到别的程序的内容,这极易导致一个应用程序破坏另一个应用程序甚至是操作系统的数据或代码。

3.OD中的F4原理是甚么?是不是相当于F2+F9?
调试中我们经常要用到的快捷键有这些:
F2:设置断点,只要在光标定位的位置(上图中灰色条)按F2键即可,再按一次F2键则会删除断点。(相当于 SoftICE 中的 F9)
F8:单步步过。每按一次这个键执行一条反汇编窗口中的一条指令,遇到 CALL 等子程序不进入其代码。(相当于 SoftICE 中的 F10)
F7:单步步入。功能同单步步过(F8)类似,区别是遇到 CALL 等子程序时会进入其中,进入后首先会停留在子程序的第一条指令上。(相当于 SoftICE 中的 F8)
F4:运行到选定位置。作用就是直接运行到光标所在位置处暂停。(相当于 SoftICE 中的 F7)
F9:运行。按下这个键如果没有设置相应断点的话,被调试的程序将直接开始运行。(相当于 SoftICE 中的 F5)
CTR+F9:执行到返回。此命令在执行到一个 ret (返回指令)指令时暂停,常用于从系统领空返回到我们调试的程序领空。(相当于 SoftICE 中的 F12)
ALT+F9:执行到用户代码。可用于从系统领空快速返回到我们调试的程序领空。(相当于 SoftICE 中的 F11)

4.大家都说的程序跑飞到底是什么概念,能不能讲解下本质
程序跑飞是单片机系统因干扰引起程序失控的一种现象.时程序跑飞现象进行剖析,说明程序跑飞的实质在于PC受干扰出错,导致多字节指令被拆散,继而导致系统将后续程序中的操作数视为指令代码,最终导致程序失控.就程序跑飞对单片机系统的影响进行了分类讨论,指出借助数字电路的存储、判断以及高速运算等功能,发挥软件优势,可及时发现和抑制干扰.针对程序跑飞后出现的不同情况,提出利用指令冗余、软件陷阱、"看门狗"及标志令牌等技术可较好地应对程序跑飞,迅速拦截失控程序流、捕捉跑飞程序,并将其引入正轨运行.这些软件措施经济、可靠,很容易结合到具体的系统和程序中. 应对程序跑飞的软件措施 。

[ 本帖最后由 dubingxin 于 2008-5-1 19:50 编辑 ]
PYG19周年生日快乐!
回复

使用道具 举报

该用户从未签到

发表于 2008-5-3 22:15:14 | 显示全部楼层
xuexi  了 呵呵
PYG19周年生日快乐!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表