2023-2024-1 20232809《Linux内核原理与分析》第六周作业

目录

一、实验楼实验五

二、GTP辅助学习


一、实验楼实验五

1、使用命令cd ./LinuxKernel/menu进入menu目录,修改test.c文件,添加Getuidgid()Getuidgid_asm()两个函数。

2、在main函数中添加这两个函数的调用命令。

3、使用命令 make rootfs重新编译,编译完成后在QEMU中使用help命令查看我们新增的命令。

4、使用以下命令运行QEMU。

$~ cd LinuxKernel
$~ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S

5、另打开一个窗口,通过以下命令使用gdb进行调试。 

$~ gdb
(gdb) file linux-3.18.6/vmlinux
(gdb) target remote:1234
(gdb) b start_kernel
(gdb) c

7、因为在start_kernel处设置了断点,执行后在该处停了下来。

8、在sys_getuid处设置断点,并继续执行。

9、在MenuOS中输入uidgid,此时会在sys_getuid处停下。

10、使用s进行单步执行。

分析:system_call是Linux中所有系统调用的入口点,每个系统调用都至少需要有一个参数,即由eax传递进入的系统调用号。call *sys_call_table(,%eax,4)函数通过eax传递来的系统调用号,来寻找相应的系统调用处理函数。系统调用本质上是一种特殊的中断,所以它也需要进行现场保存和结束调用后的现场恢复。

二、GTP辅助学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值