Windows Internals学习笔记(一)概念与工具
参考资料:
1. 《Windows Internals》
4. WDK下载地址
知识点:
1. Windows Drive Kit(WDK)是微软提供的用于Windows平台的设备驱动软件开发工具集。它包括:文档、实例、Build环境和为驱动开发人员提供的开发工具。早期,它以Windows Driver Development Kit(DDK)闻名,支持Windows Driver Model(WDM)开发。目前的名词是诞生于Vista的发布,并增加了以下工具:
● Windows Driver Foundation (WDF)
● Installable File System Kit (IFS Kit)
● Driver Test Manager (DTM)
2. Microsoft Windows SDK,Platform SDK和.Net Framework SDK是微软提供的软件开发工具集。它包括:头文件、库文件、实例、文档和用于开发应用程序的工具。注意它们三者的区别(见Wiki)。
3. Windows API是用户态下的编程接口。常听说的有Win32 API和Win64 API。

图1 Win API分类
4. Microsoft .NET Framework由类库Framework Class Library(FCL)和Common Language Runtime(CLR)组成。CLR是提供了可托管代码的执行环境,是一个经典的COM server,它的代码存在于标准的用户态Windows DLL中。实际上,.NET Framework中的所有组件都是基于非托管Windows API并实现为标准用户态的Windows DLL中的。

图2 .NET Framework各组件之间的关系
5. Windows进程的组成:
● 一个私有的虚拟地址空间。
● 一个可执程序。
● 一个开放的句柄列表,用于访问各种系统资源。比如,信号量、通信接口和文件等。
● A security content called an access token。
● A unique identifier called a process ID。
● 至少有一个执行进程(At least one thread of execution)。
6. 每一个进程会指向其父进程或子进程。如果父进程不存在了,该信息不会被更新。因此,很有可能一个进行会引用一个不存在的父进程。但这不是问题,因为没有谁会依赖这些存于当前进程的信息。
7. Windows线程的组成:
● 一组CPU寄存器的内存,代表了处理器的状态。
● 两个栈,一个用于内核模式,一个用于用户模式。
● 一个私有存储区TLS(thread-local storage)。
● 唯一标识符(thread ID)。
● 线程有时候拥有各自的security context或token。
8. 线程的上下文包括:volatile寄存器,栈和私有存储区。
9. 作业是进程模型的扩展,一个进程对象的主要功能是把一组进程被当做一个单元来进行管理和操作。在一定意义上,作业对象弥补了Windows缺乏结构化进程树的缺陷。
10. Windows内部大多数文本字符串都是以Unicode字符存储的。因此,当调用ANSI版本的Windows函数时,会有一定的性能影响。
11. Symbol文件包含了函数和变量的名字,以及数据结构的布局和格式。它们由linker程序产生,被debugger程序使用。因此,这些信息是不存在二进制文件中的。也因此,二进制文件才更小、更快。
12. User-Mode debugging分Invasive和Noninvasive两种模式。工具:命令行版Kd.exe和GUI版Windbg.exe。
13. LiveKd是一个免费工具,它允许你使用标准的Windows内核调试工具去检查运行时系统,且无须在调试模式下重启系统。


Windows Internals学习笔记(一)概念与工具的更多相关文章
- Windows Internals学习笔记(八)IO系统
参考资料: 1. <Windows Internals> 知识点: ● 当一个进
- Windows Internals学习笔记(七)Image Loader
参考资料: 1. <Windows Internals> 2. Fibers 知识点: ● 当一个进程在系统上启动时,内核将创建一个进程对象来代表它,并执行各种内核相关的初始化任务.然而, ...
- Windows Internals学习笔记(六)Windows关键系统组件
参考资料: 1. <Windows Internals> 2. Dependency Walker 3. Ntoskrnl.exe 4. Livekd的使用 5. WinDbg的使用(一) ...
- Windows Internals学习笔记(五)Synchronization
参考资料: 1. <Windows Internals> 2. 自旋锁spinlock剖析与改进 3. Lock指令前缀 4. Lock指令前缀(二) 5. Kernel Dispatch ...
- Windows Internals学习笔记(四)Trap Dispatching
参考资料: 1. <Windows Internals> 知识点: ● 陷阱trap:它是一种处理器机制,用以在某一异常或中断出现时,捕捉该执行线程,并将其控制权转交到操作系统中某一固定位 ...
- Windows Internals学习笔记(二)系统架构
参考资料: 1. <Windows Internals> 2. http://bestcbooks.com 3. Windows Drive Kit 4. Microsoft Window ...
- Windows Internals学习笔记(三)Procdump的使用
参考资料: 1. 下载地址 2. 使用示例
- Oracle RAC学习笔记:基本概念及入门
Oracle RAC学习笔记:基本概念及入门 2010年04月19日 10:39 来源:书童的博客 作者:书童 编辑:晓熊 [技术开发 技术文章] oracle 10g real applica ...
- Java IO学习笔记:概念与原理
Java IO学习笔记:概念与原理 一.概念 Java中对文件的操作是以流的方式进行的.流是Java内存中的一组有序数据序列.Java将数据从源(文件.内存.键盘.网络)读入到内存 中,形成了 ...
随机推荐
- Binary Tree Level Order Traversal II
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...
- SQL算术数字的默认类型
select 100*100*100*100*100 --错误:将 expression 转换为数据类型 int 时出现算术溢出错误. select cast(1000 as bigint) * ...
- webservice cxf error:类的两个属性具有相同名称 "password"
execption detail: Caused by: javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.Servic ...
- 解决HP服务器安装Centos7 x64无法识别硬盘
公司有一台老旧的HP服务器——HP BL460c G7 SmartArray P410i.由于种种原因,需要重新安装操作系统Centos7.但是经过各种努力,Centos7的安装程序就是无法识别服务器 ...
- Linux系统中为php添加pcntl扩展的方法
1.首先看下 phpize命令 所在的目录 (ps:我的目录/usr/bin/phpize)如果没有找到的话 执行安装yum install php53_devel (ps:请注意自己的版本) 安装 ...
- SpringMVC项目,启动项目怎么总是报找不到log4j.properties文件
具体操作:右键项目---->properties--->Java Build Path--->source--->Add Folder --->选择log4.proper ...
- linux中利用awk对数组进行排序
数组 在排序前需要对数组有所了解,数组是用于存储一系列值得变量,这些值之间通常是由联系的,可通过索引来访问数组的值,索引需要用括号括起来,基本格式如下: array[index]=value awk数 ...
- ACM题目————星际之门(一)
描述 公元3000年,子虚帝国统领着N个星系,原先它们是靠近光束飞船来进行旅行的,近来,X博士发明了星际之门,它利用虫洞技术,一条虫洞可以连通任意的两个星系,使人们不必再待待便可立刻到达目的地. 帝国 ...
- ACM题目————Robot Motion
Description A robot has been programmed to follow the instructions in its path. Instructions for the ...
- 使用 MNIST 图像识别数据集
机器学习领域中最迷人的主题之一是图像识别 (IR). 使用红外系统的示例包括使用指纹或视网膜识别的计算机登录程序和机场安全系统的扫描乘客脸寻找某种通缉名单上的个人.MNIST 数据集是可用于实验的简单 ...