第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