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

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

前言

之前,跟着海哥学习了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进行双机调试了。

参考资料

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值