
学习
leehaming
不断总结不断进步
展开
-
Linux源码学习--进程的生命周期
Linux源码学习—进程的生命周期前言最近在学习Linux 0.11内核源码,近几天主要阅读了进程的基本数据结构、进程的创建/加载运行/终结等代码,现对进程的生命周期进行总结和分享。欢迎大家批评指正,描述有误的地方请务必告知,非常感谢!说明:本文参考书目为《Linux内核设计的艺术》第二版和《Linux内核设计与实现》第三版。围绕进程,本文内容的结构分布如下,其中第2,3,4,5部分均结合Linux 0.11源码进行分析。章节主要内容1. 进程的基本概念进程、程序、任务2原创 2020-05-18 22:59:40 · 579 阅读 · 0 评论 -
x64长模式与段的纠葛
x64长模式与段的纠葛如果发现错误或者需要补充的内容,还请指正。0. 前言基本概念在x86-64计算机体系结构中,长模式是64位操作系统可以访问64位指令和寄存器的模式。64位程序以称为64位模式的子模式运行,而32位程序和16位保护模式程序则以称为兼容模式的子模式执行。分页和分页有两个共同作用:内存管理与地址映射;一定的内存保护机制。整体说明(AMD中的x64长模式与段)x64...原创 2019-12-07 12:06:11 · 2375 阅读 · 3 评论 -
Xen安装过程中遇到的一些问题
Xen安装过程中遇到的一些问题前两周又开始和Xen的相爱相杀。本文主要记录一些场景下遇到的一些问题以及解决方案。场景一物理机是lenovo一体机,曾经装过Xen4.4.0,当前环境是Ubuntu18.04+xen4.11。我希望能把Xen4.11的环境换成Xen4.4.0的环境,于是我做了以下操作:安装xen4.4.0所需的全部依赖包将Xen4.11.0目录换成Xen4.4.0的目录...原创 2019-12-01 09:51:15 · 422 阅读 · 2 评论 -
CPUID指令详解
CPUID详解最近因为个人实验的原因,需要对CPUID指令的细节内容进行详细的分析。具体到CPUID对应不同参数的执行,以及执行结束后寄存器的每一位值的含义。这里把了解到的内容进行总结,也让自己对CPUID指令执行的大致思路更加清晰。本文主要分为几个方面:CPUID指令概述不同处理器支持的参数范围CPUID的返回值分析一、CPUID指令概述1.1 CPUID定义官方对CPUID...原创 2019-11-24 11:06:28 · 16053 阅读 · 1 评论 -
TLB、PCID与ASID的故事
TLB、PCID与ASID的故事最近学习过程中了解到TLB和PCID、ASID等概念,突然发现自己将TLB与Cache的概念容易搞混。于是深入了解这几个名词和关系,本周做一些总结。本文的各部分内容分布如下:TLB的引入TLB与CachePCID和ASID的引入与作用一、TLB的引入1.1 二级页表的地址访问让我们想象这样的应用场景:CPU执行指令时,直接访问的是虚拟地址,若想获取...原创 2019-11-17 11:51:33 · 6805 阅读 · 4 评论 -
上下文切换
上下文切换最近看的一篇论文中多次提到了上下文切换的问题,尤其是切换过程中的效率问题,涉及到了一些名词:进程、线程、协程、TLB、地址空间标识符(ASID)等。查阅一些资料,这里把学习到的东西整理总结一下,同时建立这些知识片之间的联系。希望能增加自己对这些内容的理解,同时给读者提供一些思路。本文的主要内容如下:进程和线程。包括两者的概念、性质;两者之间的区别和联系。上下文切换。包括上下文切...原创 2019-11-09 14:17:43 · 2108 阅读 · 6 评论 -
再谈EPT与影子页表
再谈EPT与影子页表之前写过一篇博客记录自己对EPT和影子页表的学习。但是随着其他知识的输入,发现之前对EPT和影子页表的理解还太肤浅。本人在最近的学习过程中又遇到了与EPT和影子页表有关的话题,发现自己还有很多细节问题没有弄懂。故本文旨在进一步分析自己对两者概念的理解,以及对两者之间差异的认识。相较于之前,多了一些自己的想法。本文的提纲如下:简述Linux内存映射虚拟机的内存映射—以...原创 2019-11-03 10:09:52 · 4044 阅读 · 4 评论 -
记录一次心脏滴血靶场实验过程
记录一次心脏滴血靶场实验过程此文主要从几个方面记录本次心脏滴血的实验过程:心脏滴血的攻击原理和效果心脏滴血攻击过程复现实验结果和现象分析实验过程中遇到的问题以及解决方案https://blog.youkuaiyun.com/caozhk/article/details/23738971https://blog.youkuaiyun.com/yaofeiNO1/article/detail...原创 2019-10-27 22:24:28 · 2770 阅读 · 4 评论 -
修改Ubuntu启动项
修改Ubuntu启动项 GrubUbuntu下grub配置详解安装Ubuntu之后没有看到Ubuntu引导项的选项,希望能够看到这个界面。/boot/grub/etc/default/grubGNU GRUB(简称“GRUB”)是一个来自GNU项目的启动引导程序.GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB...原创 2018-10-27 21:57:59 · 9951 阅读 · 0 评论 -
嵌套虚拟化---VMware+KVM
嵌套虚拟化—VMware+KVM最近突然对嵌套虚拟化产生兴趣,并且想了解KVM和Qemu之间的关系,于是在本机的VMware中的Ubuntu尝试使用KVM和Qemu分别在Ubuntu虚拟机中再装Ubuntu。实现嵌套虚拟化的同时,在安装过程中了解KVM和Qemu的关系。本文主要记录在VMware中使用KVM实现嵌套虚拟化的过程。实验环境:win10主机系统 + VmwareWorkstati...原创 2018-11-05 17:14:45 · 6780 阅读 · 0 评论 -
嵌套虚拟化---VMware+QEMU/KVM
嵌套虚拟化—VMware+QEMU/KVM最近突然对嵌套虚拟化产生兴趣,并且想了解KVM和QEMU之间的关系,于是在本机的VMware中的Ubuntu尝试使用KVM和QEMU分别在Ubuntu虚拟机中再装Ubuntu。实现嵌套虚拟化的同时,在安装过程中了解KVM和QEMU的关系。本文主要记录在VMware中使用两种方式实现嵌套虚拟化的过程。qemu-system-x86_64kvm实验...原创 2018-11-05 17:15:11 · 6209 阅读 · 0 评论 -
思考Qemu KVM Xen联系
思考QEMU KVM Xen联系虚拟化中KVM, Xen, Qemu的区别详解虚拟化技术QEMU-KVM入门What’s the differences between Xen, QEMU and KVM?本文目录结构:QEMU与KVM XenQEMU与PV HVMQEMU与QEMU-KVM一、QEMU与KVM XenQEMU is used by Xen, a...原创 2018-11-05 17:15:26 · 889 阅读 · 0 评论 -
Metasploit学习总结
Metasploit学习总结最近需要利用metasploit工具找到”针对win732攻击成功、拿到shell并且能够上传文件“的exploit。实现过程中对Metasploit框架有所了解,总结如下。METASPLOIT基础入门Metasploit的基本使用Metasploit是一款开源安全漏洞检测工具,附带数百个已知的软件漏洞,并保持频繁更新。被安全社区冠以“可以黑掉整个宇宙”之名的强...原创 2018-12-03 11:44:57 · 960 阅读 · 0 评论 -
网桥 NAT host-only
网桥 NAT host-onlyvmware 虚拟机三种网络模式桥接NAT 仅主机区别是什么意思- zkuncn …虚拟机的桥接模式和NAT模式的区别- JackTao - 优快云博客我个人对网桥、NAT、HOST_ONLY的理解如下:三种模式在合理的配置下,都可以访问外部网络、并且与物理主机进行通信。1.Bridged(桥接模式)实验:我的桥接没有设置,也可以联网;但是不在一个网段...原创 2018-12-03 11:45:38 · 645 阅读 · 0 评论 -
Ubuntu中Xen配置虚拟机桥接网络
Ubuntu中Xen配置虚拟机桥接网络完成配置任务环境:Ubuntu18.04 + Xen4.11 + 虚拟机win732需要修改的文件:虚拟网卡信息win732.cfg文件Ubuntu18.04中/etc/netwrok/interfaces文件细节:虚拟网卡信息brctl addbr xenbr0 #新建一个逻辑网段;名称为xenbr0brctl add...原创 2018-12-03 15:06:27 · 926 阅读 · 0 评论 -
Xen配置文件中hap选项
Xen配置文件中hap选项Tuning Xen for Performancehap=0:虚拟机使用影子模式hap=1:虚拟机使用EPT模式HAP stands for hardware assisted paging and requires a CPU feature called EPT by Intel and RVI by AMD. It is used to manage t...原创 2018-12-03 15:18:13 · 429 阅读 · 0 评论 -
SYSENTER和SYSEXIT
SYSENTER和SYSEXIT汇编指令sysenter 和sysexit这两条新汇编的解释SYSENTER/SYSEXIT指令SYSENTER、SYSEXIT—快速系统调用 - 爱生活,爱编程 - 博客园SYSENTETR:特权级3用户代码“进入”特权级0的系统内核代码;可以从321特权级调用SYSEXIT:特权级0的系统内核代码”进入“特权级3用户代码;只能从特权级0调用执行SYS...转载 2018-12-03 15:41:17 · 825 阅读 · 0 评论 -
CentOS安装Qemu并创建客户机
CentOS安装Qemu并创建客户机1.安装依赖包yum install gcc*yum install -y glib*yum install zlib*yum install gtk3-devel下载pixman-devel-0.34.0-1.el7.x86_64.rpm(直接google);安装pixman-devel:yum install pixman-devel2.Q...原创 2018-12-10 20:23:34 · 4209 阅读 · 0 评论 -
高傲的win7
高傲的win7首先为win7证明:本文内容和本人下载的系统版本以及硬件细节有关,并不能代表所有的win7种族。好久没有写博客了,主要是因为把很多东西都记录在笔记里边了,但是感觉写博客和笔记还是不太一样,笔记就是随时随手对一些细节问题以及思路和想法的记录,大都比较零碎,写博客对我而言是一种总结和前后知识的联系,有助于更好的理解和掌握。最近做的一些事情和win732有关系,也在这上边磕磕绊绊遇到...原创 2019-07-30 14:30:27 · 271 阅读 · 0 评论 -
超级调用总结
超级调用总结阅读了几篇优质文章之后,本人对超级调用又有了进一步的理解,文章主要从这几个方面来写:当前疑惑理解超级调用PV超级调用与HVM超级调用xen4.4中实现超级调用xen4.11中实现超级调用优质文章链接为:XEN添加一个HYPERCALLXen Log 3-Add New Hypercall to Xen全虚拟化下的超级调用Xen的超级调用超...原创 2018-10-27 21:56:57 · 674 阅读 · 4 评论 -
Xen 4.11 学习总结
Xen 4.11 学习总结疑惑点既然已经删除了QEMU的模块,为什么项目中还有QEMU相关的代码?一些关键词:livepatch; docker-containers; balloon; kconfig(感觉是对平台的检测)QEMU与Xen之间的关系在Xen中PVH比PV和HVM性能都好一些;但是与KVM相比呢?Xen4.11特点总结更安全(抵御更多的攻击;meltdown...原创 2018-10-28 09:46:48 · 428 阅读 · 0 评论 -
超级调用---理论认识
Xen-名词解释PV/HVMPV:paravirtualization-(需要修改部分的guest-os) HVM:hardware virtualization machine(不需要修改)在XEN中pv是半虚拟化,hvm是全虚拟化,pv只能用于linux内核的系统,效率更高,hvm可以虚拟所有常见操作系统(可以使用windows),理论效率比pv略低,另外,hvm需要cpu...原创 2018-09-16 22:01:23 · 782 阅读 · 0 评论 -
修改windows的默认编码
修改windows的默认编码环境:win10问题背景:使用7z解压缩一个.zip文件之后,发现文件包内的文件名是乱码,但是使用同版本的7z在另一个win10系统下解压缩,没有这个问题。问题原因:是win10默认编码的问题,由于这次的电脑是海淘回来的,默认编码格式是437(chcp);不是win10的gbk;所以在遇到中文时会出现乱码。解决方案:网上一些教程是这样的:...原创 2018-09-11 23:17:13 · 72805 阅读 · 5 评论 -
docker逃逸
Docker逃逸本文主要内容为:总结如何利用DirtyCow漏洞实现Docker逃逸的过程Docker相关Docker-从入门到实践逃逸过程实现还没给你的Docker打上脏牛补丁?坏消息来了本人是在虚拟机中安装了具有dirtyCow漏洞的Ubuntu系统镜像;然后在该系统中安装Docker;接着下载现有的payload(exploit)代码,弄懂之后编译运行提权;实...原创 2018-08-25 10:10:34 · 4620 阅读 · 1 评论 -
使用git-项目开发
Git使用之前和同学合作写项目的时候,使用到了git,但是也只是使用了一两次,基本是整个模块完成了之后才一起提交的,感觉并没有很好的发挥git的作用。 今天想上传一个已经完成的项目,直接往github上传的话只能上传文件,不能上传文件夹,也挺麻烦的。所以又想到了git。记录一下。git与github本人理解是,git是一个本地的代码管理器,当我们在某个文件夹下使用这个工具后产生....原创 2018-05-19 10:08:13 · 1299 阅读 · 0 评论 -
0503-Windows下Git安装以及ZIP命令添加
1.安装git原文链接(包括linux MacOS Windows )https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git记录过程:windowshttps://git-scm.com/download/win自动下载下载完成后傻瓜式安装就可以了如果需要的话修改一下安装路径就好这是第二次安装git,比第一次...原创 2018-05-03 16:49:39 · 3639 阅读 · 0 评论 -
0509虚拟机连接U盘
虚拟机连接U盘原文连接:http://www.xitongcheng.com/jiaocheng/xtazjc_article_15126.html1.首先在主机上打开win+R:services.msc命令,打开服务2.启动Vmware USBArbitration Service服务开启,设置为自动启动3.启动VMware,点击已经建立好的虚拟机,查看USB控制器是否存在4.如果没有则:编辑虚...转载 2018-05-09 21:41:01 · 546 阅读 · 0 评论 -
我的github&&Git学习资源
我的github&&Git学习资源分享两篇文章:其中第一篇为转载原文地址:https://segmentfault.com/a/1190000002413519第二篇如下,在他人的基础上修改而来.转载 2017-06-25 23:45:18 · 841 阅读 · 0 评论 -
对数据库的理解
对数据库的理解最近编译原理课程布置了一个实习课程,大致内容是使用ParserGenerator与VC++两个软件来实现对SQL语句的编译,包括词法、语法、语义三部分;其中ParserGenerator中已经封装了lex和yacc两个工具。在这个实习过程中遇到了很多问题,也收获很多;下边是我对这次实习的初步总结;前三部分网上的内容都比较多,我重点描述我在读别人源码的过程中对数据库的理解(第四部分)原创 2017-06-26 09:46:08 · 2124 阅读 · 0 评论 -
超级调用实现总结
超级调用实现总结这两天的目标是实现一个超级调用,其中遇到了很多问题以及还没有弄清楚的现象,这里将所有过程记录一下,试图发现背后的根本原因。实践过程环境:dom0(Ubuntu14.04) + domU(Debian)过程记录设置系统调用号(使用的是reversed for client 的39)xen/include/public/xen.h#define _...原创 2018-09-17 09:45:43 · 658 阅读 · 2 评论 -
Ubuntu18.04安装问题
Ubuntu18.04安装问题疑惑a.安装过程中出现的问题应该是镜像系统代码的bug?b.待测试:installer crash解决方案测试1.进入BIOS解决:话说以后使用之前搜索电脑品牌+台式机/一体机/笔记本就可以找到了。一体机用的是F12;F9好幸也能进入一个界面,但是好像是什么设置的界面;联想win10系统怎么进入bios 大家都说的是F1…(联想台式机/一体机,开机出现...原创 2018-10-28 09:42:40 · 3365 阅读 · 4 评论 -
Ubuntu18.04安装Xen4.11
Ubuntu18.04安装Xen4.11首先Ubuntu是18.04英文版的。不是英文版的不知道会不会有问题。Build xen-hypervisor 4.10 / 4.11 and xen-tools on Ubuntu 16.04 or 18.04 for PVH1.安装依赖包apt-get install build-essentialapt-get install bcc bin...原创 2018-10-28 09:42:09 · 6136 阅读 · 2 评论 -
修改stty size中的rows, columns
修改stty size中的rows, columnsLinux command: columnsResize your terminal to be at least 110 columns wide. Currently it is 80 columns wide.export COLUMNS=200gedit ~/.bashrcsource ~/.bashrc为什么源代码还是会提...原创 2018-10-28 09:40:42 · 6472 阅读 · 2 评论 -
Xen KVM PVH PV HVM
Xen KVM PVH PV HVMXen虚拟化技术中PV和HVM的区别Xen和KVMXEN:虚拟化管理程序;hypervisor;Linux下;虚拟化解决方案;运行支持Xenophobic功能的内核;Domain0;使用这个kernel启动机器后,就可以使用qemu;虚拟出多个系统;Linux内核外部程序;全虚拟+半虚拟;更新Xen–编译内核;更好的处理性能;可以支持更多的工作负载;稳定...原创 2018-10-28 08:42:36 · 1663 阅读 · 0 评论 -
Configure Make World Install
Configure Make World InstallLinux 命令详解(三)./configure、make、make install 命令一、基本信息1 ./configure 是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。2 make 是用来编译的,它从Makefile中读取指令,然后编译3 make in...转载 2018-10-28 08:42:06 · 1382 阅读 · 1 评论 -
KPCR与进程.md
KPCR与进程KPCRKPCR1KPCR2(Kernel) Processor Control Regiona KPCR for each logical processorKPCR is the means through which the kernel manages them(processors).由于Windows需要支持多个CPU, 因此Windows内核中为此定义了...原创 2018-10-07 20:47:30 · 718 阅读 · 0 评论