进程篇----获取进程句柄(提权、打开)OpenProcess

2023-11-05

对目标进程提权、然后打开,提权的目的是为了防止当前进程的权限无法打开目标进程,获取句柄。

BOOL __EnableDebugPrivilege = TRUE; //代表需要提权
BOOL __EnableDebugPrivilege = FALSE;//代表不需提权
	BOOL EnableSeDebugPrivilege(const TCHAR*  PriviledgeName, BOOL IsEnable)
	{
		BOOL IsOk = FALSE;
		int  LastError = 0;
		//获取当前进程句柄(伪句柄)
		HANDLE  ProcessHandle = GetCurrentProcess();
		HANDLE  TokenHandle = INVALID_HANDLE_VALUE;
		TOKEN_PRIVILEGES TokenPrivileges = { 0 };

		//通过当前进程句柄获得当前进程中令牌句柄
		if (!OpenProcessToken(ProcessHandle, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &TokenHandle))
			/*BOOL OpenProcessToken(     ** 得到进程的令牌句柄
			 __in HANDLE ProcessHandle, //要修改访问权限的进程句柄
			 __in DWORD DesiredAccess, //指定你要进行的操作类型
			 __out PHANDLE TokenHandle //返回的访问令牌指针
)*/
		{
			LastError = GetLastError();
			goto Exit;
		}
		LUID	 Luid;   //Locally Unique Identifier  
		if (!LookupPrivilegeValue(NULL, PriviledgeName, &Luid))		// 通过权限名称查找uID
		//函数查看系统权限的特权值,返回信息到一个LUID结构体里
		/*BOOL LookupPrivilegeValue(
			LPCTSTR lpSystemName,    表示所要查看的系统,本地系统直接用NULL
			LPCTSTR lpName,          指向一个以零结尾的字符串,指定特权的名称
			PLUID lpLuid);           接收所返回的制定特权名称的信息*/
		{
			LastError = GetLastError();
			goto Exit;
		}
		TokenPrivileges.PrivilegeCount = 1;		// 要提升的权限个数
		TokenPrivileges.Privileges[0].Attributes = IsEnable == TRUE ? SE_PRIVILEGE_ENABLED : 0;
		TokenPrivileges.Privileges[0].Luid = Luid;


		if (!AdjustTokenPrivileges(TokenHandle, FALSE, &TokenPrivileges,
			sizeof(TOKEN_PRIVILEGES), NULL, NULL))  // 启用或禁用特权一个有TOKEN_ADJUST_PRIVILEGES访问的访问令牌.
			/*BOOL AdjustTokenPrivileges(
				HANDLE TokenHandle, //包含特权的句柄  必须有 TOKEN_ADJUST_PRIVILEGES访问令牌
				BOOL DisableAllPrivileges,//禁用所有权限标志
				PTOKEN_PRIVILEGES NewState,//新特权信息的指针(结构体)
				DWORD BufferLength, //缓冲数据大小,以字节为单位的PreviousState的缓存区(sizeof)
				PTOKEN_PRIVILEGES PreviousState,//接收被改变特权当前状态的Buffer
				PDWORD ReturnLength //接收PreviousState缓存区要求的大小
			);*/
		{
			LastError = GetLastError();
			goto Exit;
		}


		IsOk = TRUE;

	Exit:

		if (TokenHandle != INVALID_HANDLE_VALUE)
		{
			CloseHandle(TokenHandle);
			TokenHandle = INVALID_HANDLE_VALUE;
		}

		SetLastError(LastError);
		return IsOk;
	}
	HANDLE OpenProcess(DWORD DesiredAccess, BOOL IsInheritHandle, HANDLE ProcessID)
	{
		if (__EnableDebugPrivilege)
		{
			EnableSeDebugPrivilege(_T("SeDebugPrivilege"), TRUE);
		}
		HANDLE ProcessHandle = ::OpenProcess(DesiredAccess, IsInheritHandle, (DWORD)ProcessID);

		DWORD LastError = GetLastError();
		if (__EnableDebugPrivilege)
		{
			EnableSeDebugPrivilege(_T("SeDebugPrivilege"), FALSE);
		}
		SetLastError(LastError);
		return ProcessHandle;
	}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

进程篇----获取进程句柄(提权、打开)OpenProcess 的相关文章

  • InheritableThreadLocal类详解

    我们在使用ThreadLocal类的时候 可以保证各个线程使用自己的数据 而不相互干扰 但是如果我们有这样的一个需求 就是各个线程相互不干扰的情况下 各个线程的子线程可以访问到当前线程中的值 对于这个子线程来说就是访问父线程 public
  • Scrum那些事 - 什么是Scrum?

    1 什么是Scrum Scrum是敏捷开发方法论里面的一个具体实施框架 Scrum是一个包括了一系列的实践和预定义角色的过程骨架 是一种流程 计划 模式 用于有效率地开发软件 Scrum的框架中包含3种角色 3个产出 5个活动和5种价值观
  • 1.业务层 、服务层、数据层、表现层

    一般说来 业务逻辑层中的模块包含了系统所需要的所有功能上的算法和计算过程 并与数据访问层和表现层交互 抽象的说 业务逻辑层就是处理与业务相关的部分 一般来说 业务层包含一系列的执行与数据的操作 例如 开具发票 添加客户或下订单等 服务层就是
  • 《我的眼睛--图灵识别》第十章:实战演练:文字类识别

    我的眼睛 图灵识别 第十章 实战演练 文字类识别 1 标准数字 标准数字 Standard Numbers 是指10个数字使用的都是同属一种字体 它们的数字没有发生变形 没有扭曲 没有错位 存在有些变色但影响不大 字与字之间的间隔距离一样
  • Elasticsearch的简单入门:(二)ES基础

    Elasticsearch的简单入门 一 ES简介与安装 https blog csdn net kavito article details 88289820 前面我们把环境准备好了 下面继续学习ES的索引操作 2 操作索引 2 1 基本
  • Oracle VM VirtualBox安装Ubuntu虚拟机的过程记录

    一 版本信息 操作系统 Windows 10 家庭版 Oracle VM VirtualBox 版本 6 0 10 r132072 Qt5 6 2 Ubuntu 16 04 6 desktop amd64 二 创建过程 开始新建虚拟机 点击
  • 循环结构程序设计-第4关:C循环-水仙花数

    任务描述 本关任务 求出所有的水仙花数 提示 所谓水仙花数是指一个三位数 其各位数字的立方和等于该数字本身 比如153是一个水仙花数 因为153 1 3 5 3 3 3 注意 本题不需要输入语句 由于网站限制要求一定要有输入输出示例 但同学
  • 力扣每日一题【电话号码的字母组合】

    电话号码的字母组合 b站视频 class Solution public vector
  • ChatGPT将彻底改变人们的工作方式

    来源 企业网D1Net 关注公众号 人工智能学派 加入我们社群 免费领取官方chatGPT账号 自从OpenAI公司推出ChatGPT以来 它以风暴般的速度迅速影响了大量用户的日常工作和生活 并且已经通过医学院考试 软件工程师编码面试 律师
  • gorm记一次“mysql写入 Error 1366 (HY000): Incorrect string value”错误

    记一次 mysql写入 Error 1366 HY000 Incorrect string value 错误 环境go gorm docker mysql 写入数据库的内容为中文时提示Error 1366 HY000 Incorrect s
  • [管理与领导-88]:IT基层管理者 - 扩展技能 - 5 - 职场丛林法则 -2- 在职场丛林中的黑暗森林法则,在没有弄清楚情况前保持低调地调研

    前言 管理者空降到一个新的环境中 对环境中的人和事都不熟悉 此时的管理者不适合新官上任三把火 而应该意识到 环境中处处充满陷阱 危险 冷箭和一双双冷眼旁观的眼睛和暗箭 一 黑暗森林法则 黑暗森林法则 也被称为刘慈欣的科幻小说 三体 系列中提
  • Vue3的emit(‘update:modelValue‘)

    目录 概述 正文 一 v model 在原生 input 上的用法 二 使用v model在组件上实现双向绑定 通过计算属性实现 概述 在Vue3中 子组件可以通过 emit自定义事件来向父组件传递数据 在这种情况下 父组件可以通过监听子组
  • 查看服务器用户所占空间

    查看服务器个人账户所占空间大小 du h max depth 1 wangsx localhost du h max depth 1 0 mozilla 32K config 46G project 3 7G software 0 data
  • Spring中IOC容器

    IOC入门案例思路分析 1 管理什么 Service和Dao 2 如何将管理的对象存放到IOC容器 配置applicationContext xml 第二步 3 将管理的对象存放到IOC容器 如何获取IOC容器 第三步 4 获取到IOC容器
  • Dos环境变量修改

    批处理修改环境变量 修改用户变量 系统变量 全局变量 永久 临时设置环境变量 设置Java环境变量 关于路径问题 在执行批处理命令时 需要用到路径变量 这里先说明路径相关的变量参数 echo 当前盘符 d0 echo 当前盘符和路径 dp0
  • 6.830 / 6.814: Syllabus 2021 - MIT Lab 2 - SimpleDB Operators

    文章目录 1 参考链接 2 SimpleDB Architecture and Implementation Guide 2 1Filter and Join 2 2 Aggregates 2 3HeapFile Mutability 2
  • 在你的 Android 手机上运行 Golang 程序

    在我们日常开发中 运行一个服务 都是在 shell 或 cmd 下执行命令 像是使用 go run main go 直接编译运行 或是 go build 编译生成可执行文件后 以 xxx 方式运行 Go 支持交叉编译生成各平台的可执行文件
  • Linux中makefile

    第一个版本的makefile Makefile的依赖是从上至下的 换句话说就是目标文件是第一句里的目标 如果不满足执行依赖 就会继续向下执行 如果满足了生成目标的依赖 就不会再继续向下执行了 Make会自动寻找依赖条件所用到的文件 其中 我
  • 2018-12-22-jekyll-theme-H2O

    layout post title jekyll主题theme H2O categories jekyll GitHub tags jekyll GitHub theme H2O jekyll theme H2O 基于Jekyll的博客主题

随机推荐

  • Django基础入门⑩:Django查询数据库操作详讲

    Django基础入门 Django查询数据库操作详讲 Django查询数据库操作 基础操作 查询数据 比较运算符 逻辑符号 去重查询 分组集合 排序查询 分页操作 模糊查询 多表查询 执行原生 SQL 个人简介 以山河作礼 Python领域
  • 【数据结构】数组

    1 计算一维数组存储地址 a i 公式 a i L a 起始地址 i 当前i个元素下标 L 每个元素所占字节 例 int a 10 已知a 1000 sizeof int 4 求a 3 地址 1000 3 4 1012 2 计算二维数组存储
  • SQL注入之时间盲注 和 报错注入(sql-lab第一关为例)

    什么是时间盲注 时间盲注指通过页面执行的时间来判断数据内容的注入方式 通常用于数据 包含逻辑型 不能返回到页面中的场景 无法利用页面回显判断数据内容 只能通过执行的时间来获取数据 时间盲注的过程 1 找到注入点 并选择合适的注入语句 2 爆
  • hexo搭建博客-butterfly主题详细版

    Hexo搭建博客 butterfly主题 前置知识 对于Github和Gitee的基本了解与使用 最关键的是你要知道github为什么访问的这么慢 如何魔法上网访问github 或者说不用魔法如何访问github 本文在可能遇到的问题说明了
  • c语言用串口读温度值,温度传感器与串口

    1 题目要求 有时候我们需要知道在一段时间里温度传感器测量的温度的历史数据 之前的温度传感器例程只是在液晶屏上实时显示出数据而已 并不能查看它的历史数据 所以我们运用之前所有学过的知识来完成这个任务 首先我们先从简单的理念入手 利用串口每隔
  • 数学推导+纯Python实现机器学习算法12:贝叶斯网络

    Python机器学习算法实现 Author louwill 在上一讲中 我们讲到了经典的朴素贝叶斯算法 朴素贝叶斯的一大特点
  • 计算机图形技术在游戏领域应用,计算机图形图像技术在美术领域中的应用

    摘 要 现如今科学技术日益发展的时代 图像的发展已经不能够满足人类的需求 它不只是表現人们视野中的影像 通过各个领域的先进的专业的软件和技术 能够更加成功的表现出来 计算机图形图像技术已经不断的实践在各个领域 下文是对其主要应用的分析研究
  • java iterable 使用_Iterable(迭代器)的用法

    一 前言 在开发中 经常使用的还是for each循环来遍历来Collection 不经常使用Iterable 迭代器 的 下面记录一下terable是一般用法 二 说明 迭代器是一种设计模式 它是一个对象 它可以遍历并选择序列中的对象 而
  • U盘提示格式化怎么办?3个方法轻松解决!

    我的u盘已经很久没用了 今天刚把u盘插入电脑就显示需要进行格式化 但是我还有很多重要的文件都保存在里面呢 这可怎么办呀 有什么方法恢复里面的数据吗 u盘是我们日常生活中常用的移动存储设备之一 但有时可能会遇到一个让人烦恼的问题 那就是当插入
  • TypeScript基础小课堂二

    上期简单的介绍了一下TS的安装和运行环境 现在正式进入知识点阶段 1 TS类型注解 TypeScript 是 JS 的超集 TS 提供了 JS 的所有功能 并且额外的增加了 类型系统 TS中定义变量 常量 可以指定类型 A类型的变量不能保存
  • Mysql Too many connections

    程序启动过程中 连接mysql异常 信息如下 Caused by com mysql cj exceptions CJException Data source rejected establishment of connection me
  • Android 开发简易失物招领二手交易平台

    一 开发环境 1 android studio 客户端 eclipes 服务端 2 java语言 二 效果展示 视频地址 https www bilibili com video BV1Ng4y1v7XC 三 客户端开发 1 首先设置mai
  • 交换机与路由器技术-37-端口安全

    目录 一 端口安全 1 1 课程引入 1 2 基本概念 1 3 作用 1 4交换机端口安全配置 1 4 1 配置最大活跃地址数量 1 4 2 配置静态MAC地址和接口绑定 1 4 3配置接口老化时间 1 4 4 配置MAC地址违规后的操作
  • 什么是微服务架构,有何优缺点?

    什么是微服务架构 通常而言 微服务架构是一种架构模式或者说是一种架构风格 它提倡将单一应用程序划分成一组小的服务 每个服务运行独立的自己的进程中 服务之间互相协调 互相配合 为用户提供最终价值 服务之间采用轻量级的通信机制互相沟通 通常是基
  • npm link的作用与使用

    1 npm link 使用场景 库包在开发或迭代后 不适合发布到线上进行调试 过程繁琐且会导致版本号膨胀 这个时候就可以通过npm link将包放入到node的安装目录下的node modules文件夹中 这样就可以直接使用包名直接在本地调
  • js 实时监听input中值变化 【转】

    文章出处 js 实时监听input中值变化 h1 h1
  • 弗洛伊德算法(floyd)

    弗洛伊德算法和迪杰斯特拉算法都是求两点之间最短路径的问题 弗洛伊德算法使用了动态规划的思想 用二维矩阵记录了所有点之间最短的距离 虽然代码只有几行 但是思想还很值得回味的 其主要的思想就是两个点之间的直接距离能否使用第三个点来缩短 公式 v
  • 看过来——用Python探索《红楼梦》的人物关系

    数据准备 红楼梦 txt 文件一份 金陵十二钗 贾宝玉 人物名称列表 宝玉 nr 黛玉 nr 宝钗 nr 湘云 nr 凤姐 nr 李纨 nr 元春 nr 迎春 nr 探春 nr 惜春 nr 妙玉 nr 巧姐 nr 秦氏 nr 该分列表是为了
  • SpringBoot Admin服务离线、不显示健康信息的问题

    SpringBoot Admin服务离线 不显示健康信息的问题 问题1 SpringBoot Admin服务一直离线 原因 解决方法 重启电脑 重新加载配置文件 问题2 数据显示不全 解决方法 问题1 SpringBoot Admin服务一
  • 进程篇----获取进程句柄(提权、打开)OpenProcess

    对目标进程提权 然后打开 提权的目的是为了防止当前进程的权限无法打开目标进程 获取句柄 BOOL EnableDebugPrivilege TRUE 代表需要提权 BOOL EnableDebugPrivilege FALSE 代表不需提权