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

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

2021-12-08 20:56:53 654

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

竞态条件漏洞实验 一.实验要求 竞态条件是指多个线程同时访问或者操作同一块数据,运行的结果依赖于不同线程访问数据的顺序。如果一个拥有root权限的程序存在竞态条件漏洞的话,攻击者可以通过运行一个平行线程与漏洞程序竞争,以此改变该程序的行为。 本实验中要求利用竞态条件漏洞获得root权限,除了攻击外,还要学习如何制定保护方案防御攻击。 二.实验过程 1.实验准备 利用vulp.c中的竞态条件漏洞可以做很多事情。其中一种是利用漏洞在 /etc/passwd 和 /etc/shadow 后追加信息。这两个文件是u

2021-12-04 15:08:44 238

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

理解进程调度时机跟踪分析进程调度与进程切换的过程 一.实验要求 1.理解进程调度时机跟踪分析进程调度与进程切换的过程 2.理解 Linux 系统中进程调度的时机,可以在内核代码中搜索 schedule()函数,看都是哪里调用了 schedule(),判断我们课程内容中的总结是否准确; 3.使用 gdb 跟踪分析一个 schedule()函数 ,验证您对 Linux 系统进程调度与进程切换过程的理解 二.实验步骤 1.如图所示: 进入实验楼虚拟机实验环境,打开Linuxkernel文件,打开menu,修改其中

2021-11-20 22:36:04 212

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

Linux内核如何装载和启动一个可执行程序 一.实验要求 1.理解编译链接的过程和 ELF 可执行文件格式 2.编程使用 exec*库函数加载一个可执行文件,动态链接分为可执行程序装载时动态链接和运行时动态链接,编程练习动态链接库的这两种使用方式 3.使用 gdb 跟踪分析一个 execve 系统调用内核处理函数 sys_execve ,验证您对 Linux 系统加载可执行程序所需处理过程的理解 4.特别关注新的可执行程序是从哪里开始执行的?为什么 execve 系统调用返回后新的可执行程序能顺利执行?对于

2021-11-14 15:20:30 290

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

实验六-分析Linux内核创建一个新进程的过程 一.实验要求 1.更新内核并增添fork命令 2.跟踪分析进程创建的过程 进程创建分析:fork代码分析 dup_task_struct分析 copy_thread分析 copy_process分析 二.实验步骤 1.更新内核并增添fork命令: 首先要删除原有的menu,在github上下载新版本menu cd ~/LinuxKernel rm menu -rf git clone https://github.com/mengning/menu.git

2021-11-06 18:02:11 241

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

一.实验要求 1.使用 gdb 跟踪分析一个系统调用内核函数(上周选择的那一个系统调用),系统调用列表参见 torvalds/linux。推荐在实验楼 Linux 虚拟机环境下完成实验。 2.根据本周所学知识分析系统调用的过程,从 system_call 开始到 iret 结束之间的整个过程,并画出简要准确的流程图 二.实验步骤 1.克隆menu:使用git clone https://github.com/mengning/menu.git下载menu代码 cd LinuxKernel git clone

2021-10-31 15:36:46 260

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

一.基础知识 1. 用户态,内核态和中断 计算机的硬件资源是有限的,为了减少有限资源的访问和使用冲突,CPU和操作系统必须提供一些机制对用户程序进行权限划分。现代的CPU一般都有几种不同的指令执行级别,就是什么样的程序执行什么样的指令是有权限的。 内核态:在高的执行级别下,代码可以执行特权指令,访问任意的物理内存,这时CPU的执行级别对应的就是内核态,对所有的指令包括特权指令都可以执行。 用户态:在用户态(低级别指令),代码能够掌控的范围会受限制。 中断: 中断处理是从用户态进入内核态的主要方式,系统调

2021-10-24 17:22:12 117

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

跟踪分析 Linux 内核的启动过程 一、构造一个简单的Linux系统MenuOS 使用实验楼的虚拟机打开 shell,执行该命令 执行后如图所示 二、使用gdb跟踪调试Linux内核的方法 1、使用 gdb 跟踪调试内核 执行以下指令 $ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S 关于-s和-S选项的说明: -S -S freeze CPU at startup (use ’c’ to sta

2021-10-16 21:12:49 118

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

​ 完成一个简单的时间片轮转多道程序内核代码 一:实验过程 1.执行仅含时钟中断的mykernel内核 指令如下: 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 结果如下: 2.查看通过下述命令执行仅含时钟中断的mykernel内核 mymain.c

2021-10-10 22:58:46 133

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

主要问题: 一开始用mac编译的内容如下,发现很多指令和资料上存在不同。 比如bx lr都无法在传统指令上查到具体作用,后查阅资料发现,这是arm特殊的指令集。发现生成的汇编语言代码和具体的硬件有关,于是在云服务器上进行编译,终于得到和课程中相近的代码。 实验一:反汇编一个简单的C程序 实验步骤 创建main.c,并编辑main.c文件,全部创建过程如图:用 gcc 将main.c编译成汇编代码,代码如下: 由于main.s,源码繁琐,所以删除以点开头的,剩下则是纯汇编代...

2021-10-03 20:14:27 95

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

实验一Linux 系统简介 Linux 就是一个操作系统,就像已经了解的 Windows(xp,7,8)和 Mac OS 。 如图,这是操作系统在整个计算机系统中的角色。 我们的 Linux 主要是系统调用和内核那两层。当然直观地看,我们使用的操作系统还包含一些在其上运行的应用程序,比如文本编辑器、浏览器、电子邮件等。 操作系统始于二十世纪五十年代,当时的操作系统能运行批处理程序。批处理程序不需要用户的交互,它从文件或者穿孔卡片读取数据,然后输出到另外一个文件或者打印机。 二十世纪六十年代初,

2021-09-26 23:35:18 314

空空如也

空空如也

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

TA关注的人

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