Windows驱动/内核
JIA队长
一切从假设开始,一点一滴
展开
-
VS2012 + WDK8.0 + Win8调试内核驱动程序(一)
Windows操作系统内核驱动程序的调试一直都显得比较复杂,官方没有集成调试环境,只能使用WinDbg这些调试工具,且需要进行繁琐的设置。也有大牛开发VisualDDK这样的工具,很大程度上方便了大家的驱动开发。驱动新手一般都得在网上搜索+动手实验(实际上中文网站的驱动程序资料屈指可数),花个十天半个月先学会搭建开发调试环境,无形中造成了入门的高门槛。Visual Studio 2012的转载 2014-06-30 16:54:36 · 867 阅读 · 0 评论 -
如何使用windbg在驱动加载时下断
首先说说应用层的调试吧.当我们在调试windows可执行程序的时候,通过将PE文件头中的ImageBase和AddressOfEntryPoint相加,从而得出第一条指令的地址.针对这个地址下断之后目标程序就中断在了了入口处.但是这个方法在驱动调试的时候却有心无力.这是因为可执行程序都是首先被加载到各自的私有地址空间,他们不会有地址冲突.然而驱动程序运行在内核里面,所有的驱动程序共享一个地址空间.转载 2014-08-06 10:31:22 · 725 阅读 · 0 评论 -
IDT系列:(二)中断处理过程,使用bochs调试IDT中的中断服务程序
一、中断处理的过程 根据Intel 64 and IA-32 Architectures Software Developer’s Manual 的介绍,在中断或异常产生是,CPU会将当前执行的指令(或下一条指令)在内存中的地址,也就是EIP的值,放入栈中,同时还会放入CS段寄存器和eflags标志寄存器的值等。根据当前的优先级不同(ring0或ring3,也就是执行与用户转载 2014-08-25 16:57:48 · 768 阅读 · 0 评论 -
IDT系列:(一)初探IDT,Interrupt Descriptor Table,中断描述符表
IDT,Interrupt Descriptor Table,中断描述符表是CPU用来处理中断和程序异常的。 一、有关IDT的基本知识1、中断时一种机制,用来处理硬件需要向CPU输入信息的情况。 比如鼠标,键盘等。2、中断和异常的产生是随机的,在CPU正常运行过程中随时可能产生。CPU的中断处理机制3、中断可以由硬件产生(称为外部中断),也可以由软件转载 2014-08-25 16:55:17 · 684 阅读 · 0 评论 -
Windows 64编程中寄存器的使用
下面是摘自 MSDN 的文章,在 Win64 下的 registers 用途RegisterStatusUseRAXVolatileReturn value registerRCXVolatileFirst integer argumentRDXVolatileSecond integer转载 2014-12-20 09:56:28 · 1594 阅读 · 0 评论 -
谈谈对APC的一点理解
谈谈对APC的一点理解异步过程调用(APCs) 是NT异步处理体系结构中的一个基础部分,理解了它,对于了解NT怎样操作和执行几个核心的系统操作很有帮助。1) APCs允许用户程序和系统元件在一个进程的地址空间内某个线程的上下文中执行代码。2) I/O管理器使用APCs来完成一个线程发起的异步的I/O操作。例如:当一个设备驱动调用IoCompleteRequest来通转载 2014-12-06 10:31:16 · 846 阅读 · 0 评论 -
Windows启动过程详解
我们每天都在和Windows打交道,很多人可能每天都要面对多次Windows的启动过程,可是您知道在Windows的启动过程背后,隐藏着什么秘密吗?在这一系列过程中都用到了哪些重要的系统文件?系统的启动分为几个步骤?在这些步骤中计算机中发生了什么事情?这些就是本文试图告诉您的。本文的适用范围随着技术的发展,我们能够见到的计算机硬件种类越来越多。以计算机上最重要的组件CPU来说,目前转载 2015-01-18 21:57:22 · 1537 阅读 · 1 评论 -
x86—EFLAGS寄存器详解
鉴于EFLAGS寄存器的重要性,所以将这一部分内容从处理器体系结构及寻址模式一文中单独抽出另成一文,这部分内容主要来自Intel Developer Mannual,在后续的内核系列中遇到的许多和EFLAGS寄存器有关的内容将直接从本文引用。众所周知,IA-32体系结构为通用系统(general system)提供了16个基本的程序执行寄存器:包含一些通用目的寄存器(General-purpo转载 2015-04-02 17:30:32 · 853 阅读 · 0 评论 -
关于THREADINFO结构
线程为窗口维护一个threadinfo结构, threadinfo数据结构: ------------------ |登记消息队列指针| ------------------ |虚拟输入队列指针| ------------------ |发送消息队列指针| ------------------ |应答消息队列指针| ------------------转载 2015-04-03 13:22:19 · 1607 阅读 · 0 评论