Windows x64内核学习笔记(一)—— 环境与配置
Windows x64内核学习笔记(一)—— 环境与配置
- 前言
- 新特性
- 基础要求
- 实验环境
- Guest Win10配置
- 问题解决
- 参考资料
前言
之前,跟着海哥学习了windows内核的一些机制,包括保护模式,异常处理,消息机制等等,使用的环境是XP系统。
但是,在实际工作中,面对需要用到x64内核相关的内容时,依旧会感到茫然无措,毕竟脑中的知识只局限在32位内核。
随着时代发展,64位系统未来必将成为主流,但苦于市面上关于x64的教程非常少,因此一直没有机会系统化学习。
前段时间才发现周壑老师出了一套名为「x64内核研究」的教程,不得不说周壑老师真是太牛了。
那么,就让我们一起来学习x64内核吧。
新特性
相较于x32内核而言,x64内核包含以下几个新特性
- SMEP / SMAP
分别为控制寄存器Cr4的两个标志位,用于控制内核对用户层的数据读写与执行的权限。
例如如果像x32内核一样,在x64中做idt后门,那么可能会产生类似「三重错误」的错误。 - KPTI
内核页表隔离,Win10在2018年初更新的补丁,使得一个进程对应两个Cr3,处理用户层和内核层时拥有两个idt表。 - 硬件漏洞(幽灵、熔断)相关(介绍)
- CFG(介绍)
- Patch Guard
内核补丁保护,不能随意对x64内核进行patch,否则会触发不定时蓝屏。 - DSE强制签名(介绍)
基础要求
- C语言
- x64汇编
- x86保护模式
实验环境
- 虚拟机:VMware Workstation(15.1.0)版本及以上
- 操作系统:Windows 10 1903 (笔者使用的小版本是18362.356)
- 调试器:Windbg(10.0.18362.1)
- C语言(x64)开发环境:Visual Studio(2010)版本及以上
- 驱动(x64)开发环境:WDK(7600)版本及以上
- 其他工具:CE(7.0)版本及以上;DebugView(4.9.0)版本及以上
Guest Win10配置
- 由于本次学习不涉及到VT,因此可以把VT支持关掉。
- 可以调整蓝屏时产生转储文件的大小
- 转储文件的路径最好也改一下:
- 开启调试模式和测试模式
// 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
- 使用「Command+R」输入「gpedit.msc」,打开本地策略组编辑器。
- 依次展开「计算机配置」-「Windows设置」-「安全设置」-「本地策略」-「安全选项」,在具体策略中找到用于账户控制相关配置
- 将「用户账户控制:以管理员批准模式运行所有管理员」设置为「已禁用」。
好了,接下来进行重启,就能够监视核心了,然后就可以在Host OS使用WinDbg进行双机调试了。
参考资料
- bilibili周壑:x64内核研究系列教程
Windows x64内核学习笔记(一)—— 环境与配置相关推荐
- Windows x64内核学习笔记(三)—— SMEP SMAP
Windows x64内核学习笔记(三)-- SMEP & SMAP SMEP & SMAP 实验:构造IDT后门 第一步:编译以下代码 第二步:构造IDT后门 第三步:运行程序 第四 ...
- Windows x64内核学习笔记(二)—— IA-32e模式
Windows x64内核学习笔记(二)-- IA-32e模式 IA-32e模式 模式检测 强制平坦段 任务切换 中断门描述符 FS / GS 模式切换 32位程序进内核 64位程序进内核 实验:模式 ...
- Windows x64内核学习笔记(五)—— KPTI(未完待续)
Windows x64内核学习笔记(五)-- KPTI(未完待续) KPTI 实验一:构造IDT后门并读取Cr3 参考资料 KPTI 描述:KPTI(Kernel page-table isolati ...
- Windows x64内核学习笔记(四)—— 9-9-9-9-12分页
Windows x64内核学习笔记(四)-- 9-9-9-9-12分页 前言 9-9-9-9-12分页 实验一:线性地址转物理地址 页表基址 定位基址 PTE to PXE 实验二:通过页表基址定位各 ...
- Intel oneAPI学习笔记之环境变量配置运行一个PyTorch程序
前面两篇文章: Intel oneAPI学习笔记之基本概念&六大工具包一览 Intel oneAPI 学习笔记之 Centos 下安装 Intel® oneAPI Base Toolkit 和 ...
- 我的内核学习笔记:环境
最近一篇写的关于linux内核的文章是2年前,这次因为某些原因,不得不再接触内核.2年过去了,激情不再,看着满是灰尘的2440开发板,不禁感慨当年奋斗的时光. 再次接触内核,发现自己竟然也是移植过内核 ...
- Windows驱动开发学习笔记(七)—— 多核同步内核重载
Windows驱动开发学习笔记(七)-- 多核同步 基础知识 并发与同步 分析 InterlockedIncrement 原子操作相关API 内核文件 多核同步 临界区 示例一:错误的临界区 示例二: ...
- Windows驱动开发学习笔记(三)—— 内核空间内核模块
Windows驱动开发学习笔记(三)-- 内核空间&内核模块 内核空间 实验 第一步:编译如下代码 第二步:将 .sys 文件拷贝到虚拟机中 第三步:部署 .sys 文件并运行 第四步:创建一 ...
- Windows驱动开发学习笔记(二)—— 驱动调试内核编程基础
Windows驱动开发学习笔记(二)-- 驱动调试&内核编程基础 基础知识 驱动调试 PDB(Program Debug Database) WinDbg 加载 PDB 实验:调试 .sys ...
最新文章
- springboot取yml中的值_SpringBoot 中从yml配置文件中读取常用的参数值
- Access denied for user 'root'@'localhost' 解决流程
- mysql流量控制_UDP流量控制之分析
- Django默认用户认证系统和用户模型类
- idea:忽略大小写提示设置
- 李晓菁201771010114《面向对象程序设计(java)》第十三周学习总结
- 电脑摄像头未能创建连接服务器,Win7中摄像头提示未能创建视频预览错误怎么办...
- 常规计算机 符号键是,电脑键盘上的字母和符号都表示什么
- java pdf分页显示,java读取pdf(可分页读取)
- canva画图 图片居中裁剪_男士秋裤,一片式补裆款裁剪图分享给大家。天凉该给家人做秋裤啦...
- AJAX做一个动态进度条
- 一个好用的不基于时间的同步文件的软件 —— Allway sync 文件同步
- 供应链金融与区块链01——论文阅读
- testerhome学习笔记2_Bash基础
- AD7606数据转换
- java编写安卓计算器_安卓实现简单计算器
- 千里姻缘:晒晒你拥有什么样的“恋人指数”
- 元宵节主题微信红包封面序列号免费领取!
- 测试方法介绍-计算模型复杂度(GMac)、模型大小(M)、计算速度(FPS)
- 1468 - 平方矩阵 Python
热门文章
- Py之textrank4zh:textrank4zh的简介、安装、使用方法之详细攻略
- ML之回归预测:利用九大类机器学习算法对无人驾驶汽车系统参数(2018年的data,18+2)进行回归预测值VS真实值
- 成功解决TypeError: a bytes-like object is required, not 'str'
- mysql主从复制同步
- 软工作业3—词频统计
- os.path.dirname( __ file __ ) 2018/6/2
- POJ 1106 Transmitters(计算几何)
- sqlserver 穷举 排列 组合
- 清除vs2005起始页最近打开项目
- FreeRTOS的中断优先级配置小结