自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 2021-2022-1 20212821《Linux内核原理与分析》第十二周作业

SET-UID程序漏洞实验1.实验简介Set-UID 是 Unix 系统中的一个重要的安全机制。当一个 Set-UID 程序运行的时候,它被假设为具有拥有者的权限。例如,如果程序的拥有者是root,那么任何人运行这个程序时都会获得程序拥有者的权限。Set-UID 允许我们做许多很有趣的事情,但不幸的是,它也是很多坏事情的罪魁祸首。因此本次实验的目标有两点:1.欣赏好的方面,理解为什么 Set-UID 是需要的,以及它是如何被执行的。2.注意坏的方面,理解它潜在的安全性问题。2.实验过程及结果实

2021-12-12 20:55:12 444

原创 2021-2022-1 20212821《Linux内核原理与分析》第十一周作业

缓冲区溢出漏洞实验1.实验简介缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。实验楼提供的是 64 位 Ubuntu linux,而本次实验为了方便观察汇编语句,我们需要在 32 位环境下作操作,因此实验之前需要做一些准备。输入命令安装一些用于编译 32 位 C 程序的软件包:sudo apt-get updatesudo apt-g

2021-12-05 12:39:58 680

原创 2021-2022-1 20212821《Linux内核原理与分析》第九周作业

实验八:理解进程调度时机跟踪分析进程调度与进程切换的过程1.实验过程:首先,删除原来的menu并上传新的menu,加载内核如下:接着使用gdb调试:设置三个断点:schedule、context_switch、switch_to,调试过程如下图所示:遇到第一个断点,使用list列出附近代码并使用s单步执行:使用c命令继续执行:2.实验分析及总结:context_switch()函数内核源代码:2335 static inline void2336 context_

2021-11-20 16:56:19 518

原创 2021-2022-1 20212821 《Linux内核原理与分析》第八周作业

实验七:Linux内核如何装载和启动一个可执行程序1.实验过程首先上传并加载新的内核,具体过程如下图:之后打开一个新的shell窗口,使用gdb进行调试:设置三个断点,分别为:sys_execve、load_elf_binary和start_thread,具体调试过程如下:n单步执行:list列出断点start_thead处附近代码:关闭调试之后,查看elf文件头:观察到入口点地址为:0x8048d0a2.实验分析及总结在上述实验中,使用系统调用sys_execve()

2021-11-13 12:43:46 101

原创 2021-2022-1 20212821 《Linux内核原理与分析》第七周作业

分析 Linux 内核创建一个新进程的过程1.实验过程下载新menu替换原来的menu并make:使用gdb设置断点并调试,调试过程如下图所示:2.实验分析及总结do_fork关键代码分析 long do_fork(unsigned long clone_flags, unsigned long stack_start, unsigned long stack_size, int __user *parent_tidptr,

2021-11-07 17:42:36 94

原创 2021-2022-1 20212821 《Linux内核原理与分析》第六周作业

分析system_call中断处理过程1.给Menu OS 增加命令首先,重新克隆一个新版本的menu,实验过程如下:结果如图:其次,我们要通过gedit test.c在test.c中新增一个helloworld命令:保存之后,重新编译执行,结果如图:2.使用gdb跟踪分析一个系统调用内核函数首先,使用如下命令启动内核:此时,内核处于stopped状态。另外打开一个shell端口,使用gdb设置断点跟踪调试系统调用内核函数sys_time:单步执行直到return i;

2021-10-31 18:33:10 90

原创 2021-2022-1 20212821 《Linux内核原理与分析》第五周作业

实验四:使用库函数 API 和 C 代码中嵌入汇编代码两种方式使用同一个系统调用1.实验过程首先,使用库函数API在屏幕上输出“Hello World!”实验过程如下图所示:实验执行结果如下:其次,我们使用在C代码中嵌入汇编代码的方式实现上述程序修改后的main.c文件内容如下:程序执行结果如下:可以看到,使用c语言内嵌汇编代码同样实现了和上述库函数API相同的系统调用功能。2.实验过程分析及总结在本次应用c语言内嵌汇编代码实现系统调用输出字符串的过程中,首先向指定寄存器输入要显

2021-10-24 18:56:18 1681

原创 2021-2022-1 20212821《Linux内核原理与分析》第四周作业

实验三:跟踪分析Linux内核的启动过程1.实验过程首先在实验楼shell中执行以下命令:cd ~/LinuxKernel/qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img执行结果如下:使用gdb跟踪调试内核启动过程首先执行以下命令启动内核:$ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S执行结果如

2021-10-16 19:15:51 82

原创 2021-2022-1 20212821《Linux内核原理与分析》第三周作业

实验二:完成一个简单的时间片轮转多道程序内核代码首先按照实验楼所指示的步骤进行实验,结果如下图所示:上述实验代码仅包含时钟中断,并不涉及多道程序进程切换,下面进行代码修改,修改后的代码如下:首先新增了一个名称为mypcb.h的头文件:#define MAX_TASK_NUM 4#define KERNEL_STACK_SIZE 1024*2/* CPU-specific state of this task */struct Thread { ..

2021-10-10 12:59:44 58

原创 2021-2022-1 20212821《Linux内核原理与分析》第二周作业

实验一:反汇编一个简单的C程序实验要求:实验部分(以下命令为实验楼64位Linux虚拟机环境下适用,32位Linux环境可能会稍有不同) 使用$ gcc –S –o main.s main.c -m32命令编译成汇编代码,并根据本周所学知识分析其汇编代码的工作过程。实验结果如下图所示:在vim中使用“g/.s*/d”命令查看main.s中的汇编代码如下,最左侧的数字表示行号:上述汇编代码的工作过程首先,程序从main函数中的第一条代码开始执行(假定此时EIP=..

2021-10-03 10:51:36 82

原创 2021-2022-1 20212821 《Linux内核原理与分析》第一周作业

实验一:Linux 系统简介1.1 Linux为何物Linux是一个操作系统,就像我们经常使用的Windows一样。操作系统在计算机系统中的角色如下图所示注:上述图片来源于蓝桥云课《Linux基础入门》我们的 Linux 主要是系统调用和内核那两层。当然直观地看,我们使用的操作系统还包含一些在其上运行的应用程序,比如文本编辑器、浏览器、电子邮件等。1.2 Linux历史简介1991 年 10 月,Linus Torvalds(Linux 之父)基于UNIX开发出了最初的Linux,发行

2021-09-28 09:42:40 160

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除