Windows提高_1.1内核对象
内核对象
什么是内核对象?
内核对象本质上是一个结构体,我们不能直接的操作一个内核对象,需要通过操作系统提供的一系列函数和我们使用的内核对象句柄对它进行一系列的修改。
如何操作内核对象?
创建一个内核对象:CreateXXX(对象)
打开一个内核对象使用: OpenXXX(对象名)
通常来讲,每一个内核对象都有自己的标识,可能是 id ,也可能名字,通过名称或者 id 就可以打开一个已经被创建的内核对象了。
操作内核对象:使用的是与对象关联的一些函数
关闭一个内核对象:大多数使用 CloseHandle()
内核对象的几个特性
全局性:内核对象是归操作系统所有,在不同应用程序中能够操作同一个内核对象。
引用计数:每一个内核对象都有一个引用计数,当创建或者打开一个内核对象的时候,引用计数会+1,当关闭一个内核对象的时候,引用计数会 -1,当引用计数为 0 的时候,内核对象会被销毁。
当一个应用程序退出的时候,该程序打开的所有内核对象都会被主动担当 CloseHandle
安全描述符:大多数内核对象在创建的时候都需要提供一个安全描述符,通常使用 NULL
句柄表:操作内核对象必须通过内核对象句柄,而内核对象句柄实际上是句柄表的索引,句柄表描述了当前内核对象所在内核中的位置和访问权限。句柄表是进程相关的,同一个内核对象在不同的进程中可能存在不同的值。
应用程序一 行为 CreateFile() 创建一个文件 test1.txt 产生了对应的句柄 4 (test1) OpenFile() 打开一个文件 test2.txt 产生了对应的句柄 8 (test2) 应用程序二 行为 CreateFile() 创建一个文件 test2.txt 产生了对应的句柄 4 (test2) OpenFile() 打开一个文件 test1.txt 产生了对应的句柄 8 (test1)
内核对象的跨进程访问
在父进程创建子进程的时候,可以选择子进程是否拥有父类的句柄
大多数的内核对象都有一个名字或者id,通过id可以访问到其他进程创建的内核对象
使用 DuplicateHandle 从一个进程中拷贝内核对象句柄到另一个进程
在句柄表中添加内核对象的途径
当创建一个内核对象的时候,会在句柄表中添加一项
在父进程创建子进程的时候,可以选择子进程是否拥有父类的句柄
大多数的内核对象都有一个名字或者id,通过id可以访问到其他进程创建的内核对象
使用 DuplicateHandle 从一个进程中拷贝内核对象句柄到另一个进程


Windows提高_1.1内核对象的更多相关文章
- Windows提高_1.2遍历进程、遍历模块
进程 什么是进程? 通俗的来讲,进程就是一个运行中的程序,最少包含一个虚拟空间,通常是 4 GB大小,一组提供数据和代码的模块,通产是 dll 和 exe 文件,一个进程内核对象和最少一个线程. 进程 ...
- Windows提高_1.4进程通信
进程通信 使用 WM_COPYDATA 客户端(发送端) // 1. 找到窗口程序 HWND hWnd = FindWindow(NULL, L"Window1"); // 2 ...
- Windows提高_1.3文件操作
文件操作 不带句柄的文件操作 // 1. 拷贝文件,第三个参数为 FALSE 表示会覆盖 // CopyFile(L"D:\\1.txt", L"E:\\2.txt&qu ...
- Windows内核对象
1. 内核对象 Windows中每个内核对象都只是一个内存块,它由操作系统内核分配,并只能由操作系统内核进行访问,应用程序不能在内存中定位这些数据结构并直接更改其内容.这个内存块是一个数据结构,其成员 ...
- windows编程之内核对象
学好windows编程,理解内核对象还是至关重要的(●'◡'●).闲话不多说,下面先来了解一下关于内核对象的知识: 内核对象(kernel object):内核对象是用于管理进 ...
- [4]Windows内核情景分析---内核对象
写过Windows应用程序的朋友都常常听说"内核对象"."句柄"等术语却无从得知他们的内核实现到底是怎样的, 本篇文章就揭开这些技术的神秘面纱. 常见的内核对象 ...
- windows核心编程---第八章 使用内核对象进行线程同步
使用内核对象进行线程同步. 前面我们介绍了用户模式下线程同步的几种方式.在用户模式下进行线程同步的最大好处就是速度非常快.因此当需要使用线程同步时用户模式下的线程同步是首选. 但是用户模式下的线程同步 ...
- Windows API学习---线程与内核对象的同步
前言 若干种内核对象,包括进程,线程和作业.可以将所有这些内核对象用于同步目的.对于线程同步来说,这些内核对象中的每种对象都可以说是处于已通知或未通知的状态之中.这种状态的切换是由Microsoft为 ...
- windows内核对象句柄
内核对象用于管理进程.线程和文件等诸多种类的大量资源,每一个内核对象都只是一个句内存快,它由操作系统内核分配,并只能右操作系统内核访问.这个内存块是一个数据结构,其维护着与对象相关的信息,其中少数成员 ...
随机推荐
- Android自己主动提示文本框(AutoCompleteTextView)
自己主动提示文本框(AutoCompleteTextView)能够加强用户体验,缩短用户的输入时间(百度的搜索框就是这个效果). 首先.在xml中定义AutoCompleteTextView控件: a ...
- ios网络学习------11 原生API文件上传之断点续传思路
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVhbmcyMDA5MzAzNTEz/font/5a6L5L2T/fontsize/400/fill/I0 ...
- 11种常见sqlmap使用方法
sqlmap是渗透中常用的一个注入工具,其实在注入工具方面,一个sqlmap就足够用了,只要你用的熟,秒杀各种工具,只是一个便捷性问题. 一.SQLMAP用于Access数据库注入 (1) 猜解是否能 ...
- Android性能測试 一些适用于Android Studio的代码审查和性能測试工具
导言: Android应用在CPU占用,内存消耗方面的性能指标是影响产品质量的重要因素,因为QQ管家,360手机助手等应用都提供直观的内存消耗,流量监控功能,致使用户比以往更加关注软件的性能,并以此进 ...
- vijos - P1077克隆龙 (找规律 + 指数型母函数 + python)
P1077克隆龙 Accepted 标签:[显示标签] 描写叙述 如今龙的克隆已成为可能,龙基因由ACTG字母组成,而龙的基因有例如以下特点: 1.A在基因中的出现为偶数次(包含0): 2.C的情况也 ...
- socket listen backlog
http://stackoverflow.com/questions/4253454/question-about-listening-and-backlog-for-sockets The list ...
- CPU开销sql server 性能调优
sql server 性能调优 CPU开销分析 一. 概述 上次在介绍性能调优中讲到了I/O的开销查看及维护,这次介绍CPU的开销及维护, 在调优方面是可以从多个维度去发现问题如I/O,CPU, 内存 ...
- 模块化编程:AMD规范
目前,通行的Javascript模块规范共有两种:ComonJS和AMD. CommonJS node.js的模块系统,就是参照CommonJS规范实现的.在ConmonJS中,有一个全局方法requ ...
- sublime text2 配置php本地环境时遇到的错误。
首先,将PHP加到电脑的环境变量中如图(D:\PHPEnv\PHP5是我PHP的安装目录): 第二步:添加编译系统配置 第三步:配置详情: { "cmd": ["php. ...
- [转]C语言文件操作函数大全(超详细)
fopen(打开文件)相关函数 open,fclose表头文件 #include<stdio.h>定义函数 FILE * fopen(const char * path,const cha ...