操作系统---中断/异常的处理过程

第一关:除零异常分析

由于是使用版本1.1作为内核,解压文件时要注意

ls /data/workspace/myshixun/exp1
cp /data/workspace/myshixun/exp1/1.1.tgz ~/os
ls os/

将文件复制过去后,切换目录,进行解压

cd ~/os/linux-0.11-lab
tar -zxvf ../1.1.tgz 1.1

解压完成后,调整cur指向  

rm -rf cur
ln -s 1.1 cur
ls

切换进入1.1内核,make

cd 1.1/linux
make

再返回原目录下,rungdb,打开另一个终端,切换目录进行mygdb

进入gdb调试

b main.c:147
c
x/6i $eip

找到idiv位置,进行si

si
si
si
info registers
si
info registers

然后再使用x/wx $esp查看栈顶位置即可

第二关:int 指令分析

第二关与第一关环境不同,需要重新下载压缩包,压缩包位置在exp2里面,方法与上面相同,这里直接省略。

配置好环境后,启动gdb

b task1
c
x/5i $eip
si
x/5i $eip
info registers
si
info registers
x/5wx $esp

第二关与第一关方法类似

第三关:iret指令分析

在第二关基础上,打开gdb

b task1
c
x/5i $eip
si
x/5i $eip
info registers
si
info registers
bt
finish
disas
si
si
disas

找到iret指令位置,由于环境原因,iret指令位置不同,所以b *后面接的是当前iret的位置

b *0x796e
c
disas
si
disas
info registers
x/5wx $esp

本文链接:https://my.lmcjl.com/post/4216.html

展开阅读全文

4 评论

留下您的评论.