`
andyjackson
  • 浏览: 58584 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

WINDOWS核心编程——内核对象(续)

阅读更多

上篇讲到通过DuplicateHandle共享内核对象的用法。下面先讲讲DuplicateHandle另一种用法:

假设一个进程对一个文件映射对象拥有读写权限。在程序的某个位置,调用一个函数,并希望它对文件只有读权限。应该使用DuplicateHandle为现有的对象创建一个新的只有读权限的句柄。然后把这个句柄传给该函数,而不是用原来的句柄。

int WINAPI_tWinMain(HINSTANCE hInstExe, HINSTANCE hPrevInstance, LPTSTR szCmdLine, int nCmdShow){
   HANDLE hFileMapRW = CreateFileMapping(INVALID_HANDLE_VALUE,NULL,
PAGE_READWRITE,0,10240,NULL);

   HANDLE hFileMapRO;

   DuplicateHandle(GetCurrentProcess(), hFileMapRW, GetCurrentProcess(), 
&hFileMapRO, FILE_MAP_READ, FALSE,0);
//......
}
 

下面讨论(内核)对象命名 中遗留下来的问题。

 

终端服务(Terminal Service) 和前面的描述有些差别。在运行终端服务的计算机中,有多个内核对象的命名空间。其中一个是全局的,主要由服务使用,每个客户端都能够访问。另外,每个客户端都有自己的内核对象命名空间。

//通过ProcessIdToSessionId获得该进程所在的终端会话。
DWORD processID = GetCurrentProcessId();
DWORD sessionID;
if(ProcessIdToSessionId(processID, &sessioId)){
   tprintf(TEXT("^^^^^^^"));
}else{
  //.............
}

//显示的将内核对象创建在全局命名空间中。
HANDLE h = CreateEvent(NULL,FALSE, FALSE,TEXT("Global\\MyName"));

//显示的将内核对象创建在当前会话的命名空间中。
HANDLE h = CreateEvent(NULL,FALSE, FALSE,TEXT("Local\\MyName"));
 

对于一般的内核对象,我们最好应该模仿上面的方式,创建自己专有的命名空间,从而防止恶意程序的Dos攻击。

 

分享到:
评论

相关推荐

    Windows编程入门——字节跳动.pptx

    Windows 编程入门涵盖了 Windows 操作系统、Windows 基本编程理论、API 文档、字符集与字符编码、内核对象、线程 API、WinDbg、SDK、PE 文件格式、文件系统等多个方面的知识点,是 Windows 编程的必备知识。

    寒江独钓--windows内核安全编程光盘源码_寒江独钓windows内核安全编程_

    《寒江独钓--Windows内核安全编程》是一份深入探讨Windows操作系统内核安全编程的珍贵资源,由知名技术专家“寒江独钓”编著。这份资料包含了丰富的Windows内核驱动开发实例,覆盖了从磁盘驱动、文件系统驱动到网络...

    寒江独钓——Windows内核安全编程

    《寒江独钓——Windows内核安全编程》是一本深入探讨Windows操作系统内核安全的专著。书名取自古诗词,寓意在信息技术的海洋中独自探索深奥的内核安全领域,暗示了作者对这一主题的独到见解和深入研究。这本书主要...

    寒江独钓——Windows内核安全编程 package2

    《寒江独钓——Windows内核安全编程》这一系列教程,是针对Windows操作系统内核安全编程的深度探讨。在Windows操作系统中,内核是系统的核心部分,它负责管理硬件资源,提供基本的服务供上层软件调用。内核安全编程...

    多任务编程---1 windows内核对象

    ### 多任务编程——Windows内核对象 #### 引言 在探讨Windows多任务编程时,内核对象是一个核心概念,对于深入理解Windows操作系统的工作原理至关重要。本文将围绕这一主题展开,详细介绍Windows内核对象的基本...

    天书夜读——从汇编语言到windows内核编程

    《天书夜读——从汇编语言到Windows内核编程》是一本深入探讨计算机底层原理和技术的书籍,尤其关注汇编语言与操作系统内核的交互。汇编语言是计算机科学的基础,它允许程序员直接控制硬件,是理解计算机工作原理的...

    深入浅出讲解Windows程序设计——Visual+C++课

    这包括了解Windows的内核、进程和线程管理、以及内存管理等核心概念。在学习Visual C++进行Windows程序开发时,通常会用到Windows API(应用程序编程接口),它是操作系统提供的一系列函数和宏,用来帮助开发者访问...

    Windows内核情景分析——采用开源代码ReactOS(上册).pdf

    1. Windows内核概述:介绍Windows操作系统的核心部分,即内核,它是操作系统中管理硬件资源和软件资源的程序集合。内核负责进程调度、内存管理、文件系统、网络通信以及安全机制等基本功能。 2. ReactOS项目介绍:...

    操作系统实验——Windows 控制台命令.docx

    5. **Windows核心系统服务**: - **Windows执行体**:包含了系统服务、设备驱动程序、文件系统、网络堆栈等。 - **Windows内核**:处理调度、内存管理、中断处理等核心功能。 - **设备驱动程序**:为硬件设备提供...

    Windows高级编程指南

    1. **内核模式与用户模式**:在Windows操作系统中,程序运行在两种不同的模式下——内核模式和用户模式。内核模式允许程序直接访问硬件资源,而用户模式则对程序的操作进行了限制,以提高系统的稳定性和安全性。 2. ...

    windows 内核 pdf

    《Windows内核PDF》资源包含了两本重量级的书籍——官方英文原版的"Microsoft Windows Internals"和潘爱民翻译的"Windows内核原理与实现",这为深入理解Windows操作系统内核提供了宝贵的资料。 "Microsoft Windows ...

    深入解析Windows操作系统 第4版——Microsoft Windows Server 2003/Windows XP/Windows 2000技术内幕

    - **内核模块**:介绍了Windows内核的基本结构与功能,包括进程管理、内存管理、设备驱动等核心组件。 - **驱动程序模型**:分析了不同版本Windows中的驱动程序模型(如WDM、NDIS等),以及它们如何与内核交互以提供...

    内核漏洞利用技术文章集合

    内核漏洞利用技术是网络安全领域中的重要研究方向,它涉及到操作系统的核心部分——内核的安全性。内核是操作系统的心脏,负责管理硬件资源、调度进程、处理系统调用等关键任务,因此,任何针对内核的漏洞都可能导致...

    Rootkits:Subverting the Windows Kernel 源代码

    Windows内核是操作系统的核心部分,负责管理和调度系统资源。攻击者常利用内核漏洞植入根套件,如通过权限提升、驱动程序注入等方法。一旦成功,根套件可以控制网络连接、文件系统、内存管理等关键功能。 **三、C++...

    Windows编程启示录.pdf

    - **Win32 API**:详细介绍Windows编程中最常用的API之一——Win32 API,包括其功能和用法。 - **COM组件对象模型**:讲解COM模型的基本概念以及如何利用它来构建组件化应用程序。 - **.NET Framework**:介绍.NET ...

    Windows操作系统核心技术--讲义和试验

    《Windows操作系统核心技术——讲义与实验》是一份深入探讨Windows操作系统内部机制的教育资源,涵盖了从底层硬件交互到高级编程接口的广泛主题。这份资料主要针对Java、VB.NET、.NET、C/C++以及C#等编程语言的...

    windows内核开发之键盘记录源码

    本文将聚焦于一个特定的内核开发实例——键盘记录器,通过分析“ctrl2cap”这个源码,揭示其在Windows内核层实现键盘监控和记录的原理。 键盘记录器,顾名思义,是一种可以捕捉并存储用户键盘输入的程序。在系统...

    Windows驱动编程 电子书

    在IT领域,Windows驱动编程是构建操作系统与硬件设备交互的核心技术。这三本电子书——"MSWDM.chm"、"WALTONEY.CHM"和"WindowsWDMDriver.chm"显然涵盖了这一主题,旨在帮助读者深入理解并掌握Windows驱动程序的开发...

Global site tag (gtag.js) - Google Analytics