第1关:除零异常分析

输入命令

cp /data/workspace/myshixun/exp1/1.1.tgz ~/os
cd ~/os/linux-0.11-lab
tar -zxvf ../1.1.tgz 1.1
rm -rf cur
ln -s 1.1 cur
cd 1.1/linux
make

打开另一个终端

cd ~/os/linux-0.11-lab
./rungdb

在原来的终端输入

cd ../..
./mygdb

调试gdb输入

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

调试后的终端图片

最后记得kill退出gdb。防止影响下一关

1.在函数main 的语句“jiffies =jiffies/0;”所对应的汇编指令片段中,有一个idiv指令,此指令的地址是多少?(0x0000690e)
2.在该idiv指令执行之前,当前指令位置(CS:EIP)和栈位置(SS:ESP)分别是多少?(0xf:0x690e)和(0x17:0x25760)
3.使用si 命令执行了该指令后,新指令位置和栈位置分别是多少?(0x8:0x814b)和(0x10:0x1fa2c)
4.此时栈中保存的恢复点位置和用户栈位置分别是多少?(0xf:0x690e)和(0x17:0x25760)

第2关:int指令分析

环境准备

cp /data/workspace/myshixun/exp2/1.tgz ~/os
cd ~/os/linux-0.11-lab
tar -zxvf ../1.tgz 1
rm -rf cur
ln -s 1 cur
cd 1/linux
make

 进入gdb调试输入(gdb调试看上一关)

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

 

第3关:iret指令分析

第二关的环境下,调试gdb,输入

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

bt
disas
b *0x795e
c
x/5i $eip
info registers
x/5wx $esp
si
info registers

 

 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐