Windows内核原理系列01 - 基本概念
1.Windows API
Windows 应用编程接口(API)是针对WIndwos操作系统用户模式的系统编程接口,包含在WindwosSDK中。
2.关于.NET
.NET由一个被称为FCL的类库和一个被称为CLR的公共语言运行库组成。FCL是建立在CLR之上的,而CLR是一组标准的COM服务器,提供了垃圾回收,即时编译类型检验等特性。由于CLR的这些特性,使得开发人员的生产效率得以提高。.NET框架与组建的关系如下:
.NET应用程序
用户模式(托管代码) ——————————
类库(FCL)
CLR(COM服务器)
用户模式(非托管代码) ——————————
Windows API DLL
内核模式 Windows内核
3.服务、函数和例程
服务在Windows上有多种含义:
1.Windwos API :特指Windows子系统中的API,包含在user32.dll,gdi.dll,advapi.dll,kerenalbase.dll中
2.原生的系统服务 :工作在任何子系统之下,由操作体统提供的系统调用,包含在ntdll中,是内核的唯一入口点, Windwos API是靠调用这些API实现的,是这些API在WIndwos子系统上的的封装。
3.内核支持函数 :只能在内核模式下调用的例程
4.Window服务,由Windows服务管理器启动的进程
5. DLL:一组可调用的例程
4.进程
进程是一个容器,包含了程序实例执行时包含的各种资源:
1.私有虚拟地址空间
可以采用共享内存或者ReadProcessMemory突破这一限制。
进程使用VAD来管理虚拟地址空间,内部使用AVL树。
2.可执行程序以及相关的DLL
3.已经打开的句柄表:指向各种系统资源:文件,信号量等
4.访问令牌:标识了与该进程关联的用户,安全组,特权,UAC虚拟化状态,会话,有限的用户状态
5.进程ID(与线程ID共享一个空间,不会重)
6.至少一个可执行的线程
7.一个父进程(有可能已经不存在,这时在一般工具中可以显示为无父进程)
PS:判断父进程的有效性可以用当前进程的启动时间和父进程ID对应进程的启动时间做比较。
5.线程
线程是进程内部的实体,也是Windows执行此进程的调度实体。线程包括以下一些组件:
1.一组处理器状态和CPU寄存器(称为线程上下文,在切换线程时需要切换这些数据),可以由GetThreadContext获得。
2.两个栈,一个用于内核模式执行,另外一个用于用户模式执行。由于内核模式和用户模式是分离的,内核模式虽然可以访问用户模式的内存,但是为了充分隔离,需要把栈分开。另外一个分开的理由是以前系统调用是依赖int 2e软中断的方式进行的,不是直接call过去的。现在的实现方式是sysenter,也会跳转的一个指定地址,并把当前的用户态栈指针用寄存器ax传递过去。
3.TLS,线程局部存贮,由一个进程内的TLS表和每个线程各自维护的一个TLS表构成,每个表项目维护一个指针。线程中使用索引访问这个表项目,进程的TLS表中保存了索引的占用情况,每个线程中保存了该线程中特定索引对应的值。实现了同一个索引在不同线程中可以获取到不同的值。
4.线程ID
5.令牌(可选),多线程服务器用于模仿客户的安全环境,或者模拟SYSTEM权限...
6.纤程
一种用户态的线程,为了避免内核模式线程切换带来的开销,采用用户态模式调度(UMS),纤程不会自动放弃执行,直到调用SwitchToFiber或者退出。
7.虚拟内存
Windows采用线性地址的虚拟内存系统,使得每个进程拥有一个很大的虚拟内存空间。采用分页机制实现。并利用页面文件或文件映射的方式将不常用的数据写入硬盘以腾出更多的物理内存。
WIndwos采用3GB模式或者地址窗口扩展(AWE)扩展了32位程序的地址空间。AWE允许用户将不同的物理内存映射到自己2G(3G)的用户空间中。
8.内核模式和用户模式
为了保护操作系统本身,操作系统利用处理器的特权级的机制将系统分为用户模式(Ring3)和内核模式(Ring0),Ring0下允许执行特权指令,Ring3到Ring0需要特定的方式进入,并且收到保护。内核模式下所有代码共享一个虚拟地址空间,驱动运行在内核模式下,因此驱动的不稳定会影响到系统的稳定性。在64位的Windows中要求驱动程序强制签名。
9.终端服务及多个会话
终端服务是服务器,用于接受多个会话请求,实现本地或者远程的会话。远程会话可以使用远程桌面创建。
10.对象和句柄
借助于一个对象管理器的内核组件,Windows对对象进行管理,并使用句柄对其进行引用。对象管理器提供以下几种服务:
1.为系统资源提供可读的名称
2.在进程之间共享资源和数据
3.保护资源,避免未授权的访问
4.引用跟踪,不再使用时自动释放对象。
11.安全性
Windows的核心安全功能包括:
1.针对可共享对象的自主包含和强制完整性保护
2.安全审计(针对主体或者发起他们的用户以及发起动作的记录)
3.登录时的认证
4.禁止用户采用访问未初始化资源的方法访问其他用户已经释放的数据
Windows支持3种对象访问控制形式:
1.自主访问控制:由对象的所有者授权或者拒绝他人访问这些对象,当用户登录是会获得一组安全凭证(令牌),当他试图访问对象时,系统会用他的安全凭证(令牌)与对象的访问控制列表(ACL)进行比较。
2.特权访问控制:即使所有者联系不到,也可以访问被保护的对象。(管理员)
3.强制完整性保护:用于同一个账户内部的对象访问。UAC
Windows内核原理系列01 - 基本概念的更多相关文章
- Windows内核原理-同步IO与异步IO
目录 Windows内核原理-同步IO与异步IO 背景 目的 I/O 同步I/O 异步I/O I/O完成通知 总结 参考文档 Windows内核原理-同步IO与异步IO 背景 在前段时间检查异常连接导 ...
- 【转载】深入研究Windows内部原理绝对经典的资料
原文:深入研究Windows内部原理绝对经典的资料 另一篇资料:深入研究Windows内部原理系列 (为了方便大家下,我打包了放在一下地址: 1-6:http://download.csdn.net/ ...
- Windows Kernel Way 1:Windows内核调试技术
掌握Windows内核调试技术是学习与研究Windows内核的基础,调试Windows内核的方式大致分为两种: (1)通过Windbg工具在Windows系统运行之初连接到Windows内核,连接成功 ...
- windows内核安全编程书籍
windows internals 的中文译本 windows内核原理与实现 版权声明:本文为博主原创文章,未经博主允许不得转载.
- Windows原理深入学习系列-Windows内核提权
这是[信安成长计划]的第 22 篇文章 0x00 目录 0x01 介绍 0x02 替换 Token 0x03 编辑 ACL 0x04 修改 Privileges 0x05 参考文章 继续纠正网上文章中 ...
- 鸿蒙内核源码分析(文件概念篇) | 为什么说一切皆是文件 | 百篇博客分析OpenHarmony源码 | v62.01
百篇博客系列篇.本篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么说一切皆是文件 | 51.c.h.o 本篇开始说文件系统,它是内核五大模块之一,甚至有Linux的设计哲学是" ...
- 鸿蒙内核源码分析(进程概念篇) | 进程在管理哪些资源 | 百篇博客分析OpenHarmony源码 | v24.01
百篇博客系列篇.本篇为: v24.xx 鸿蒙内核源码分析(进程概念篇) | 进程在管理哪些资源 | 51.c.h .o 进程管理相关篇为: v02.xx 鸿蒙内核源码分析(进程管理篇) | 谁在管理内 ...
- [7] Windows内核情景分析---线程同步
基于同步对象的等待.唤醒机制: 一个线程可以等待一个对象或多个对象而进入等待状态(也叫睡眠状态),另一个线程可以触发那个等待对象,唤醒在那个对象上等待的所有线程. 一个线程可以等待一个对象或多个对象, ...
- 2017-2018-1 20179205《Linux内核原理与设计》第八周作业
<Linux内核原理与设计>第八周作业 视频学习及操作分析 预处理.编译.链接和目标文件的格式 可执行程序是怎么来的? 以C语言为例,经过编译器预处理.编译成汇编代码.汇编器编译成目标代码 ...
随机推荐
- linux 下如何抓取HTTP流量包(httpry)
基于某些原因你需要嗅探HTTP Web流量(即HTTP请求和响应).例如,你可能会测试Web服务器的性能,或者x奥uy调试Web应用程序或RESTful服务 ,又或者试图解决PAC(代理自动配置)问题 ...
- DBA-mysql-表
create table student( id int(4) not null, name char(20) not null, age int(3) not null default '0', ...
- 远程连接Oracle时出现ORA-01034 和ORA-27101 的解决办法
服务器本地连接自身没有问题,但远程客户端连接时报错,远程客户端使用tnsping也没有问题. cmd->tnsping 192.168.56.101:1521/ora11gR2 tnsping命 ...
- MapWinGIS.ocx 注册
(1)不管对版本4.8还是4.9.3,运行环境都必须为32位的.Net Frame 3.5,低了高了都不行,会导致注册OCX失败. (2)对于MapWinGIS.ocx 4.8 版本,需要32位的 M ...
- 01.Bootstrap入门
Bootstrap介绍: Bootstrap,来自 Twitter,是目前很受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加 ...
- sap 取货币之间汇率
FORM FRM_GET_KURSK USING PV_KURST "M PV_FCURR PV_TCURR PV_PRSDT CHANGING PV_KURSK. DATA: LV_RAT ...
- <<软件测试实战>>读书笔记
软件测试基础 软件的复杂度已经超越了人的理解能力 1. 虽然高抽象的层次语言,程序框架,程序库等提高了人的生产力,但是还是需要开发者深入理解细节,可以减少开发时间,但是无法减少开发者学习整个技术栈的时 ...
- 编译Docker<v1.9.0>源码和初级安装
本文主要介绍了如何在POWER CPU处理器上编译和安装Docker服务.很多时候,我们都需要自己编译Docker源码,有的时候是由于自己的处理器没有对应的安装包,有的时候是由于当前的新版本还有发布, ...
- BizTalk发布WS-Security的web services
最近做个项目,biztalk跟OTM(Oracle Transportation Management)系统做对接,双方通过web services通讯,这部分是BizTalk发布WS-Securit ...
- 记一次故障处理----主机异常关闭后mongodb二进制文件损坏
今天,在某个演示环境中,我们的产品经历过整个机房断电后,出现了mongodb二进制文件损坏,以下是故障的分析记录过程: 1.在客户处支撑的同事发现整个机房断电再恢复后,3个mongodb复制集中,有1 ...