摘要: 前言 Windows操作系统的内核代码使用C和汇编进行编写,内核中最重要的就是一些结构体和算法,了解了这些结构体后可以帮助我们对内核的代码进行分析。本文将介绍四个非常重要的结构体。TRAP_FRAME结构体是由操作系统维护的一块数据,在内核层用来保存用户层现场的结构体(例如线程在用户层进行系统服务函 阅读全文
posted @ 2019-03-24 16:55 J坚持C 阅读(2297) 评论(0) 推荐(2) 编辑
摘要: SSDT表介绍 ntdll.dll模块中的函数有些以nt或zw开头的函数为了完成相应的功能需要进入内核,调用内核中以nt开头的函数来完成相应的功能。ntdll.dll里的函数在进入内核层之前首先将系统服务号传入eax寄存器中,然后调用KiSystemService函数进入内核层。进入内核后会根据ea 阅读全文
posted @ 2019-03-02 13:58 J坚持C 阅读(3105) 评论(0) 推荐(2) 编辑
摘要: 介绍安装VS2017和安装WDK 阅读全文
posted @ 2019-02-28 18:11 J坚持C 阅读(16901) 评论(0) 推荐(0) 编辑
摘要: 使用windbg工具来完成PAE分页的实验 阅读全文
posted @ 2019-02-27 22:20 J坚持C 阅读(707) 评论(0) 推荐(0) 编辑
摘要: 在进行内核学习/编程之前需要创建属于自己的双机调试环境。通过不断的查阅资料和亲身实验,总结了使用Visual Studio 2017或windbg进行调试的经验。 内核调试需要使用一台计算机用于调试,另一台计算机用于使用调试器来调试之前的计算机。为了能在同一台计算机上进行内核调试,通常使用虚拟机来运行被调试的计算机。另外使用虚拟机运行被调试的机器,会比较安全,因为虚拟机可以随便的使用,无需担心调试过程中导致的系统损坏。而调试器所在的计算机通常使用物理机。 为了简单叙述,我们将设置分成两个部分,分别是被调试的虚拟机和调试器所属的物理机,这里使用WIndows XP 32位或者Windows 7 64位作为被调试的虚拟机。而物理机则使用Windows 10 64位 1809版本。使用的调试器是windbg或者集成了windbg的Visual studio 2017。 阅读全文
posted @ 2019-02-08 23:54 J坚持C 阅读(5119) 评论(0) 推荐(1) 编辑