自定义博客皮肤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 20212819《Linux内核原理与分析》第十二周作业

Linux Capability探索实验一、实验描述本实验中,学生将感受到linux capability功能在访问控制上的优势,掌握使用Capability达到遵守最小权限原则的目的,并分析linux中基于Capability访问控制的设计。二、实验步骤1.下载Libcap(准备内容)libcap 库能够使用户级别的程序与 capability 特性做交互,一些linux发行版不包括这个库,在环境中已经有 /usr/include/sys/capability.h 这个文件,为了避免老版本的影响

2021-12-12 19:21:56 143

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

竞态漏洞实验实验简介竞态条件是指多个线程同时访问或者操作同一块数据,运行的结果依赖于不同线程访问数据的顺序。如果一个拥有root权限的程序存在竞态条件漏洞的话,攻击者可以通过运行一个平行线程与漏洞程序竞争,以此改变该程序的行为。在本实验中学生将利用竞态条件漏洞获得root权限。除了攻击之外,学生还将学习如何制定保护方案抵御该类攻击。实验准备由于本实验环境开启了针对竞态条件攻击的保护,所以需要先关掉保护$ sudo su$ echo 0 > /proc/sys/fs/protected_s

2021-12-05 12:33:35 148

原创 【无标题】

基础知识1.进程的调度(1)中断处理过程(包括时钟中断、I/O中断、系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule();(2)内核线程可以直接调用schedule()进行进程切换,也可以在中断处理过程中进行调度,也就是说内核线程作为一类的特殊的进程可以主动调度,也可以被动调度;(3)用户态进程无法实现主动调度,仅能通过陷入内核态后的某个时机点进行调度,即在中断处理过程中进行调度。2.进程的切换(1)为了控制进程的执行,内核必

2021-11-21 19:25:20 101

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

一、编译链接的过程程序从源代码到可执行文件经过四个步骤:预处理、编译、汇编、链接。1、预处理:预处理时编译器删除所有的注释“/”和“/**/”;删除所有的“#define”,展开所有的宏定义;处理所有的条件预编译指令;处理“#include”预编译指令,将被包含的文件插入该预编译指令的位置,这一过程是递归进行的;添加行号和文件名标识。2、编译:编译时gcc首先要检查代码的规范性、是否有语法错误等,以确定代码实际要做的工作;在检查无误后,gcc把代码翻译成汇编语言。3、汇编:汇编后形成的.o格式的

2021-11-14 19:31:16 1004

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

实验六-分析Linux内核创建一个新进程的过程实验过程1.删除原menu,下载新menucd ~/LinuxKernelrm menu -rfgit clone https://github.com/mengning/menu.git2.向MenuOS中增加fork命令,使用help查看现有命令cd menu mv test_fork.c test.cmake rootfs MenuOS>>help MenuOS>>fork 3.gdb调试shel

2021-11-07 17:47:45 260

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

分析 system_call 中断处理过程实验步骤1.给MenuOS增加命令rm -rf menu //强制删除当前menu目录git clone https://github.com/mengning/menu.git //重新克隆一个新版本的menucd menu //切换到menu目录make rootfs //运行结果添加hello命令运行结果2.使用gdb跟踪系统调用内核函数sys_timecd linuxkernelqemu -kernel linux-3.18

2021-10-31 22:52:51 76

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

实验四:使用库函数 API 和 C 代码中嵌入汇编代码两种方式使用同一个系统调用系统调用系统调用的库函数就是读者使用的操作系统提供的API(应用程序编程接口),API只是函数定义。系统调用是通过软中断向内核发出了中断请求,int指令的执行就会触发一个中断请求。Libc库函数定义的一些API内部使用了系统调用的封装例程,其主要目的是发布系统调用,使程序员在写代码时不需要用汇编指令和寄存器 传递参数来触发系统调用。一般每个系统调用对应一个系统调用的封装例程,函数库再用这些封装例程定义出给程序员调用的API

2021-10-24 21:48:56 114

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

实验三:跟踪分析 Linux 内核的启动过程实验过程使用实验楼的虚拟机打开 shell输入以下命令cd ~/LinuxKernel/qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img执行结果

2021-10-17 21:30:20 67

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

完成一个简单的时间片轮转多道程序内核代码1 实验过程使用实验楼的虚拟机打开 shell输入如下代码# 注意路径是区分大小的$ cd ~/LinuxKernel/linux-3.9.4$ rm -rf mykernel$ patch -p1 < ../mykernel_for_linux3.9.4sc.patch$ make allnoconfig# 编译内核请耐心等待$ make$ qemu -kernel arch/x86/boot/bzImage运行结果如图

2021-10-10 22:46:49 90

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

实验一 反汇编一个简单的C程序实验过程首先创建main.c文件,然后使用vim编辑代码。然后使用如下命令编译成汇编代码文件main.s。$ gcc –S –o main.s main.c -m32main.s删除“.”字符开头后的代码分析main.s的汇编代码g: pushl %ebp//ebp入栈 movl %esp, %ebp//ebp=esp,生成新的堆栈空间 movl 8(%ebp), %eax//将变址寻址ebp+8所指向内存的值存入eax addl

2021-10-03 20:05:25 55

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

实验一 Linux系统简介1.1 linux为何物我们的 Linux 主要是系统调用和内核那两层。当然直观地看,我们使用的操作系统还包含一些在其上运行的应用程序,比如文本编辑器、浏览器、电子邮件等。1.2 linux历史简介Linux 诞生大事件:1965 年,Bell 实验室、MIT、GE(通用电气公司)准备开发 Multics 系统,为了同时支持 300 个终端访问主机,但是 1969 年失败了;1969 年,Ken Thompson(C 语言之父)利用汇编语言开发了 File Server

2021-09-28 12:54:46 179

空空如也

空空如也

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

TA关注的人

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