123456

 

2013年2月16日

4断点和单步执行

摘要: 4.12在调试器中设置断点当我们在调试器中设置断点,调试器会先把这里的本来指令的第一个字节保存起来,然后写入int3指令,4.13断点命中对于window这种保护模式下的多任务操作系统,INT3异常的处理函数是操作系统的内核函数(KiTrap03),因此执行INT3会导致CPU执行nt!kitrap03函数,KiTrap03对X86 CPU的断点异常会有一个特殊的处理,会将程序指针寄存器的值减1出于上面的原因,我们在调试器中看到的程序指针指向的仍是INT3指令的位置,而不是它的下一条指令,这下做目的有以下两点:1.调试器在使用INT3断点时,总是只替换一个字节,因此,如果程序指针指向下一个指令 阅读全文

posted @ 2013-02-16 17:36 hgy413 阅读(338) 评论(0) 推荐(0) 编辑

3中断和异常

摘要: 3.13异常来自于CPU本身,是主动产生的,而中断来自于外部设备,是中断源发起的,CPU是被动的3.2异常分为3类:错误,陷阱,中止错误类异常通常可以被纠正,如内存页错误,错误异常处理程序返回时,CPU执行的第一条指令仍是刚才导致异常的那条指令,所以如果导致异常的情况没有消除,会再次产生异常陷阱类异常会执行紧接关要执行的下一条指令,如INT3中止类异常主要用于报告严重错误,不允许恢复继续执行,3.5中断和异常处理的核心数据结构是中断描述符表(IDT)响应的全过程:1.cs和EIP的低16位入栈2.标志寄存器低16位入栈3.清除标志寄存器的IF标志,以禁止其他中断4.清除标志寄存器的TF,RF, 阅读全文

posted @ 2013-02-16 15:05 hgy413 阅读(126) 评论(0) 推荐(0) 编辑

导航