第1关:除零异常分析
任务描述
分析版本 1.1 内核,回答下列问题:
1.在函数 main 的语句jiffies = jiffies/0;所对应的汇编指令片段中,有一个 idiv 指令,此指令的地址是多少?
2.在该 idiv 指令执行之前,当前指令位置(CS:EIP)和栈位置(SS:ESP)分别是多少?
3.使用 si 命令执行了该指令后,新指令位置和栈位置分别是多少?此时栈中保存的恢复点位置和用户栈位置分别是多少?
相关知识
为了完成本关任务,你需要掌握:
1.如何设置某版本的内核为分析对象;
2.如何开始用 gdb 调试内核;
3.查看 C 语句编译之后对应的汇编指令片段;
4.分析响应中断/异常时,CPU 做了哪些工作;
5.查看当前寄存器的状态;
6.查看当前栈顶的状态。
gdb调试过程
(gdb) b main.c:147Breakpoint 2 at 0x6903: