第1关:版本1内核执行的前 3 个系统调用
任务描述
分析版本1内核,回答下列问题:
系统运行时,执行的前 3 个系统调用的编号和名字分别是什么?
相关知识
为了完成本关任务,你需要:跟踪系统调用的发生。
环境准备
本关卡使用版本 1 内核进行分析,版本 1 内核文件存放在/data/workspace/myshixun/exp1
文件夹中。
使用 gdb 调试内核,跟踪到 main 函数入口的方法与之前实训一样。
cp /data/workspace/myshixun/exp1/1.tgz ~/os
cd ~/os/linux-0.11-lab
tar -zxvf ../1.tgz
rm -rf cur
ln -s 1 cur
cd 1/linux
make
cd ../..
./rungdb
新建一个终端terminal
cd ~/os/linux-0.11-lab
./mygdb
跟踪系统调用的发生
系统调用的总控函数是 system_call ,只要在这里设断点,即可捕获系统调用的发生,如下图所示:
此时,系统调用号存放在寄存器 eax 中
重复上述操作
b system_call
c
disas
display $eax
disas
b *0x7780
c
x/3i $eip
si
再次重复
b system_call
c
disas
display $eax
disas
b *0x7780
c
x/3i $eip
si
编程要求
根据相关知识,回答问题:(将答案填写在/data/workspace/myshixun/第一关.txt
中)
系统运行时,执行的前 3 个系统调用的编号和名字分别是什么?