Windows x64内核学习笔记(一)—— 环境与配置

  • 前言
  • 新特性
  • 基础要求
  • 实验环境
  • Guest Win10配置
  • 问题解决
  • 参考资料

前言

之前,跟着海哥学习了windows内核的一些机制,包括保护模式,异常处理,消息机制等等,使用的环境是XP系统。

但是,在实际工作中,面对需要用到x64内核相关的内容时,依旧会感到茫然无措,毕竟脑中的知识只局限在32位内核。

随着时代发展,64位系统未来必将成为主流,但苦于市面上关于x64的教程非常少,因此一直没有机会系统化学习。

前段时间才发现周壑老师出了一套名为「x64内核研究」的教程,不得不说周壑老师真是太牛了。

那么,就让我们一起来学习x64内核吧。

新特性

相较于x32内核而言,x64内核包含以下几个新特性

  1. SMEP / SMAP
    分别为控制寄存器Cr4的两个标志位,用于控制内核对用户层的数据读写与执行的权限。
    例如如果像x32内核一样,在x64中做idt后门,那么可能会产生类似「三重错误」的错误。
  2. KPTI
    内核页表隔离,Win10在2018年初更新的补丁,使得一个进程对应两个Cr3,处理用户层和内核层时拥有两个idt表。
  3. 硬件漏洞(幽灵、熔断)相关(介绍)
  4. CFG(介绍)
  5. Patch Guard
    内核补丁保护,不能随意对x64内核进行patch,否则会触发不定时蓝屏。
  6. DSE强制签名(介绍)

基础要求

  1. C语言
  2. x64汇编
  3. x86保护模式

实验环境

  1. 虚拟机:VMware Workstation(15.1.0)版本及以上
  2. 操作系统:Windows 10 1903 (笔者使用的小版本是18362.356)
  3. 调试器:Windbg(10.0.18362.1)
  4. C语言(x64)开发环境:Visual Studio(2010)版本及以上
  5. 驱动(x64)开发环境:WDK(7600)版本及以上
  6. 其他工具:CE(7.0)版本及以上;DebugView(4.9.0)版本及以上

Guest Win10配置

  1. 由于本次学习不涉及到VT,因此可以把VT支持关掉。
  2. 可以调整蓝屏时产生转储文件的大小
  3. 转储文件的路径最好也改一下:
  4. 开启调试模式和测试模式
    // 1. 查看当前的启动项信息
    bcdedit /enum {current}
    // 2. 复制一个启动项,并开启调试模式和测试模式
    bcdedit /copy {current} /d "Windows Debug Entry"
    bcdedit /dbgsettings serial baudrate:115200 debugport:1
    //    ID是第一条命令执行后提供的启动项标识符
    bcdedit /debug {ID} ON
    bcdedit /set {ID} TESTSIGNING on
    // 3.(可选)添加一个只禁用驱动签名的启动项
    bcdedit /copy {current} /d "Windows Nointegritycheck Entry"
    //    ID是上一条命令执行后提供的启动项标识符
    bcdedit /set {ID} nointegritychecks on
    

问题解决

在尝试使用DbgView64监视核心时,可能会报错

解决方法:关闭UAC

  1. 使用「Command+R」输入「gpedit.msc」,打开本地策略组编辑器。
  2. 依次展开「计算机配置」-「Windows设置」-「安全设置」-「本地策略」-「安全选项」,在具体策略中找到用于账户控制相关配置
  3. 将「用户账户控制:以管理员批准模式运行所有管理员」设置为「已禁用」。

好了,接下来进行重启,就能够监视核心了,然后就可以在Host OS使用WinDbg进行双机调试了。

参考资料

  • bilibili周壑:x64内核研究系列教程

Windows x64内核学习笔记(一)—— 环境与配置相关推荐

  1. Windows x64内核学习笔记(三)—— SMEP SMAP

    Windows x64内核学习笔记(三)-- SMEP & SMAP SMEP & SMAP 实验:构造IDT后门 第一步:编译以下代码 第二步:构造IDT后门 第三步:运行程序 第四 ...

  2. Windows x64内核学习笔记(二)—— IA-32e模式

    Windows x64内核学习笔记(二)-- IA-32e模式 IA-32e模式 模式检测 强制平坦段 任务切换 中断门描述符 FS / GS 模式切换 32位程序进内核 64位程序进内核 实验:模式 ...

  3. Windows x64内核学习笔记(五)—— KPTI(未完待续)

    Windows x64内核学习笔记(五)-- KPTI(未完待续) KPTI 实验一:构造IDT后门并读取Cr3 参考资料 KPTI 描述:KPTI(Kernel page-table isolati ...

  4. Windows x64内核学习笔记(四)—— 9-9-9-9-12分页

    Windows x64内核学习笔记(四)-- 9-9-9-9-12分页 前言 9-9-9-9-12分页 实验一:线性地址转物理地址 页表基址 定位基址 PTE to PXE 实验二:通过页表基址定位各 ...

  5. Intel oneAPI学习笔记之环境变量配置运行一个PyTorch程序

    前面两篇文章: Intel oneAPI学习笔记之基本概念&六大工具包一览 Intel oneAPI 学习笔记之 Centos 下安装 Intel® oneAPI Base Toolkit 和 ...

  6. 我的内核学习笔记:环境

    最近一篇写的关于linux内核的文章是2年前,这次因为某些原因,不得不再接触内核.2年过去了,激情不再,看着满是灰尘的2440开发板,不禁感慨当年奋斗的时光. 再次接触内核,发现自己竟然也是移植过内核 ...

  7. Windows驱动开发学习笔记(七)—— 多核同步内核重载

    Windows驱动开发学习笔记(七)-- 多核同步 基础知识 并发与同步 分析 InterlockedIncrement 原子操作相关API 内核文件 多核同步 临界区 示例一:错误的临界区 示例二: ...

  8. Windows驱动开发学习笔记(三)—— 内核空间内核模块

    Windows驱动开发学习笔记(三)-- 内核空间&内核模块 内核空间 实验 第一步:编译如下代码 第二步:将 .sys 文件拷贝到虚拟机中 第三步:部署 .sys 文件并运行 第四步:创建一 ...

  9. Windows驱动开发学习笔记(二)—— 驱动调试内核编程基础

    Windows驱动开发学习笔记(二)-- 驱动调试&内核编程基础 基础知识 驱动调试 PDB(Program Debug Database) WinDbg 加载 PDB 实验:调试 .sys ...

最新文章

  1. springboot取yml中的值_SpringBoot 中从yml配置文件中读取常用的参数值
  2. Access denied for user 'root'@'localhost' 解决流程
  3. mysql流量控制_UDP流量控制之分析
  4. Django默认用户认证系统和用户模型类
  5. idea:忽略大小写提示设置
  6. 李晓菁201771010114《面向对象程序设计(java)》第十三周学习总结
  7. 电脑摄像头未能创建连接服务器,Win7中摄像头提示未能创建视频预览错误怎么办...
  8. 常规计算机 符号键是,电脑键盘上的字母和符号都表示什么
  9. java pdf分页显示,java读取pdf(可分页读取)
  10. canva画图 图片居中裁剪_男士秋裤,一片式补裆款裁剪图分享给大家。天凉该给家人做秋裤啦...
  11. AJAX做一个动态进度条
  12. 一个好用的不基于时间的同步文件的软件 —— Allway sync 文件同步
  13. 供应链金融与区块链01——论文阅读
  14. testerhome学习笔记2_Bash基础
  15. AD7606数据转换
  16. java编写安卓计算器_安卓实现简单计算器
  17. 千里姻缘:晒晒你拥有什么样的“恋人指数”
  18. 元宵节主题微信红包封面序列号免费领取!
  19. 测试方法介绍-计算模型复杂度(GMac)、模型大小(M)、计算速度(FPS)
  20. 1468 - 平方矩阵 Python

热门文章

  1. Py之textrank4zh:textrank4zh的简介、安装、使用方法之详细攻略
  2. ML之回归预测:利用九大类机器学习算法对无人驾驶汽车系统参数(2018年的data,18+2)进行回归预测值VS真实值
  3. 成功解决TypeError: a bytes-like object is required, not 'str'
  4. mysql主从复制同步
  5. 软工作业3—词频统计
  6. os.path.dirname( __ file __ ) 2018/6/2
  7. POJ 1106 Transmitters(计算几何)
  8. sqlserver 穷举 排列 组合
  9. 清除vs2005起始页最近打开项目
  10. FreeRTOS的中断优先级配置小结