内核知识第六讲,内核编写规范,以及获取GDT表 一丶内核驱动编写规范 我们都知道,在ring3下,如果我们的程序出错了.那么就崩溃了.但是在ring0下,只要我们的程序崩溃了.那么直接就蓝屏了. 那么有那些规范? 1.最基本的检查要有. 比如检查指针是否为NULL,基本的校验错误必须有 2.对内存进行操作的时候,要进行内存判断.下面提供内存判断的API BOOLEAN MmIsAddressValid( IN PVOID VirtualAddress ); 给定一个缓冲区,然后检查其内存是否有效…
内核知识第八讲,PDE,PTE,页目录表,页表的内存管理 一丶查看GDT表. 我们通过WinDbg + 虚拟机可以进行双机调试.调试一下看下GDT表 我们知道,GDT表中.存储的是存储段信息. 保存了一系列的段和内存的属性. 但是微软并没有使用. 我们可以通过ring3的段寄存器. 当作GDT表的下标.进行查表. 查询GDT表. 例如我们用OD随便打开一个ring3的exe,然后看下段和虚拟地址.: 虚拟地址: 0040256f  段选择子: cs:1B 那么此时段选择字当下表.虚拟地址当作偏移…
内核知识第12讲,SSDT表.以用户模式到系统模式的两种方式. 一丶IDT解析. 我们知道.IDT表中存放着各种中断信息.比如当我们调用int 3的时候,则会调用IDT表中的第三项来进行调用. 而函数地址则是操作系统给的. 因为中断是CPU和操作系统通信的一种方式. 查看IDTR  (IDT表)第三项. IDT首地址给出了,其中表项是7ff 我们每一项是8个字节,所以 7ff/8 = 255 项.也就是IDT表中是0-256 其中重要的是有个int 3 我们对其 u,则可以看int 3的指令的.…
目录 Linux基础知识第六讲,远程管理ssh操作 一丶什么是SSH 1.什么是SSH 2.了解域名跟端口 二丶SSH命令以及远程连接linux进行维护 1.ssh命令格式 2.scp远程终端拷贝文件 3.ssh高级用法 4.ssh别名配置 Linux基础知识第六讲,远程管理ssh操作 一丶什么是SSH 1.什么是SSH 在 Linux 中 SSH 是 非常常用 的工具,通过 SSH 客户端 我们可以连接到运行了 SSH 服务器 的远程机器上 SSH简单来说就是 一个客户端 一个服务器. 中间的…
目录 驱动第六讲_Windbg连续调试Ring3.与Ring0 一丶Windbg连调试 驱动第六讲_Windbg连续调试Ring3.与Ring0 一丶Windbg连调试 有时候我们调试一个程序.可以使用Windbg.但是如果我们想一个Windbg 调试一个Ring3.并且在调试一个Ring0程序应该怎么做. 第一种方法: 虚拟机安装Windbg.并且调试Ring3. 我们的主 第二种方式: 1.使用命令获取用户控件的进程信息 !process 0 0 2.切换进程.找到你需要调试的进程EPROC…
Docker背后的内核知识 当谈论Docker时,常常会聊到Docker的实现方式.很多开发者都知道,Docker容器本质上是宿主机上的进程.Docker通过namespace实现了资源隔离.通过cgroups实现了资源限制,通过写时复制机制实现了高效的文件操作.但更进一步深入namespace和cgroups等技术细节时,大部分开发者都会感到茫然无措.所以在这里,先带领大家走进Linux内核,了解namespace和cgroups的技术细节. namespace资源隔离 想要要实现一个资源隔离…
原文:Linux内核分析(六)----字符设备控制方法实现|揭秘系统调用本质 Linux内核分析(六) 昨天我们对字符设备进行了初步的了解,并且实现了简单的字符设备驱动,今天我们继续对字符设备的某些方法进行完善. 今天我们会分析到以下内容: 1.      字符设备控制方法实现 2.      揭秘系统调用本质 在昨天我们实现的字符设备中有open.read.write等方法,由于这些方法我们在以前编写应用程序的时候,相信大家已经有所涉及所以就没单独列出来分析,今天我们主要来分析一下我们以前接触…
目录 一丶驱动是如何运行的 1.服务注册驱动 二丶Ring3跟Ring0通讯的几种方式 1.IOCTRL_CODE 控制代码的几种IO 2.非控制 缓冲区的三种方式. 三丶Ring3跟Ring0开发区别 1.什么是Ring3 什么是Ring0 四丶IRQL中断级别 五丶驱动函数的分类 六丶编写内核中的注意事项 一丶驱动是如何运行的 1.服务注册驱动 我们编写驱动.一定要知道驱动是如何运行的 首先在我们安装一个驱动的时候,会创建一个服务.(注册表) 在 HKEY_LOCAL_MACHINE\SYS…
内核第三讲,进入ring0,以及编写第一个内核驱动程序. PS: 请下配置双机调试,下方有可能用到.如果不配置,则你可以不用调试, 博客连接: http://www.cnblogs.com/iBinary/p/8260969.html 一丶进入ring0之前的简介 进入0环之前,我们要明白操作系统的设计,操作系统允许驱动程序使用In out等等特权指令来操作高2G的内存.那么必然会有接口. 图示如下. 那么我们可以模拟一个驱动程序来进入0环. 而操作系统提供的接口的,有专门的名称. 叫做DDK,…
LINUX内核分析第六周学习总结——进程的描述和进程的创建 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.知识概要 进程的描述 进程描述符task_struct数据结构(一) 进程描述符task_struct数据结构(二) 进程的创建 进程的创建概览及fork一个进程的用户态代码 理解进程创建过程复杂代码的方法 浏览进程创建过程相关的关键代码 创建的新进程是从哪里开始执行的…