linux及安全第五周总结

给MenuOS增加time和time-asm命令

中间过程已省略了,我们所做的只是将menu更新

具体命令如下

rm menu -rf 强制删除

git clone http://github.com/mengning/menu.git 克隆相关信息

cd menu make rootfs

使用gdb跟踪系统调用内核函数sys_time

命令如下

使用gdb跟踪调试内核

qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S # 关于-s和-S选项的说明:
另开一个shell窗口

gdb
(gdb)file linux-3.18.6/vmlinux # 在gdb界面中targe remote之前加载符号表
(gdb)target remote:1234 # 建立gdb和gdbserver之间的连接,按c 让qemu上的Linux继续运行 加载符号表

分析system_call中断处理过程

将getpid添加到menu中

首先在test.c的main函数中添加MenuConfig和相应函数

测试添加成功

调试过程如system_time,故不再重复

从system_call到iret可以用下图表示

时间: 2025-01-08 23:03:24

linux及安全第五周总结的相关文章

Linux内核分析第五周作业

分析system_call中断处理过程 这次的目标是通过gdb来跟踪上周选择的uname系统调用.因为系统调用是通过中断在内核态实现的,gdb无法调试本机的系统调用.所以必须像之前的内核跟踪那样,用gdb远程连接至qemu虚拟机进行跟踪. 1. 首先修改之前的MenuOS,添加一个myuname函数通过API的方式调用uname系统调用,直接复制了上周的代码,注意要在main函数中把这个函数添加到菜单中 用make命令编译以后,会生成一个test的可执行文件,可以先在本地运行试一试 可以看到命令

Linux内核学习第五周 系统调用

一.实验截图 二.系统调用流程图: 三.总结:系统调用过程分析 linux的系统调用过程:用户程序→C库(即API):INT 0x80 →system_call→系统调用服务例程→内核程序.我们常说的用户API其实就是系统提供的C库. 系统调用是通过软中断指令 INT 0x80 实现的,而这条INT 0x80指令就被封装在C库的函数中.软中断和我们常说的硬中断不同之处在于,软中断是由指令触发的,而不是由硬件外设引起的.INT 0x80 这条指令的执行会让系统跳转到一个预设的内核空间地址,它指向系

linux学习作业-第五周

1.显示当前系统上root.fedora或user1用户的默认shell: #!/bin/bash #Program #input username ,then print userbash #2016/08/30 V0.0.1 rex frist  #注明程序使用的shell,作用,日期,版本 read -p "please input you username.then ,output you default shell :" userbash #读取输入的用户名 if [ $us

【Linux基础】第五周作业

1.显示当前系统上root.fedora或user1用户的默认shell: #egrep '^(root|fedora|user1)'/etc/passwd|cut -d: -f1,7 [[email protected] ~]# egrep '^(root|lanin)' /etc/passwd|cut -d: -f1,7 root:/bin/bash lanin:/bin/bash #awk -F:'/root|fedora|user1/{print $1"  ",$7}' /et

linux内核分析第五周-分析system_call中断处理过程

本实验目的:通过以一个简单的menu小程序,跟踪系统调用的过程,分析与总结系统调用的机制和三层进入的过程. 实验原理:系统调用处理过程与中断处理的机制 系统调用是通过软中断指令 INT 0x80 实现的,而这条INT 0x80指令就被封装在C库的函数中.(软中断和我们常说的硬中断不同之处在于,软中断是由指令触发的,而不是由硬件外设引起的.)INT 0x80 这条指令的执行会让系统跳转到一个预设的内核空间地址,它指向系统调用处理程序,即system_call函数. system_call函数是怎么

Linux学习笔记第五周第二次课(3月6日)

7.6 yum更换国内源 wget 下载网址,下载文件: 安装wget命令,#yum install -y wget: curl -O 下载网址,下载文件 7.7 yum下载rpm包 安装扩展源epel 安装命令#yum install -y epel-release 查看命令#yum list | grep epel yum下载rpm包 仅下载不安装命令,#yum install -y 包名 --downloadonly 查看下载的文件,命令#ls /var/cache/yum/x86/7/

Linux学习笔记第五周第四次课(3月8日)

8.6 管道符和作业控制 管道符|,前面命令的结果给到后面命令处理: fg把任务调到前台:bg丢到后台并运行: #vmstat 1不停的显示系统的状态 sleep 1000暂停1000秒 8.7/8.8 shell变量 PATH环境变量: #env获取到系统变量,系统内置: #set查看系统及用户变量 有特殊符号的要用单引号: 全局变量,其他连接的用户也可以查看到这个变量:其他用户看不到: #w查看当前主机连接的用户信息: pstree命令安装,#yum install psmisc 全局变量设

Linux学习笔记第五周第五次课(3月9日)

8.10 shell特殊符号cut命令 c='$a$b',c就等于$a$b字符,也相当于c=\$a\$b cut,截取字符串:-d指定分隔符: 8.11 sort_wc_uniq命令 sort排序: 特殊符号排在最前,然后数字,然后字母顺序 -n的话,字母表示为0: wc -l统计行数,-m统计全部字符数(含隐藏字符):-w word单词: uniq去重复:#uniq 2.txt: 需要先排序,再去重,命令为#sort 2.txt | uniq -c 以上操作,不会更改文件内容,只是处理显示结果

linux内核分析 第五周 扒开系统调用的三层皮(下)

rm menu -rf 强制删除原menu文件 git clone http://github.com/mengning/menu.git 从github中克隆 cd menu 在test.c中增加上周编写的两个函数:Getpid()和GetpidAsm(),修改test.c中的main函数,添加两行代码MenuConfig make rootfs这一步之后会打开menu,输入help后可以看到当前的系统调用: 分别执行刚加进去的两个系统调用: 插入断点进行调试: 从system_call开始到