第一关:除零异常分析
由于是使用版本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 评论