20.过保护句柄提权和黑客工具检测-Windows驱动

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

本次游戏没法给

内容参考于:微尘网络安全

上一个内容:19.0环保护进程-Windows驱动

效果图:注意先前的值是2,紧接着就变成了问号,这个愿意是,软件的检测通过全局句柄表给我降级了,所以还需要搞一下全局句柄表,本次只可以做到破图标正常附加,无法正常读写内存

首先CE原本的名字是 cheatengine-x86_64-SSE4-AVX2,如下图红框,需要给它改一下名字(随便改),否则检测软件会检测到黑客工具

检测原理就是,它会检测运行的进程是否存在 cheatengine-x86_64-SSE4-AVX2 这个名字,给改一下就可以了

修改文件名后,如下图

如下图红框,有时候CE没有权限,下图红框都不会显示图标

然后附加后只可以看得到进程id,看不到名字,这就是被降权的特征

然后我们使用代码对CE进行提权,提权的代码,如下图红框是在监控函数中,原理是当我们使用CE附加某进程时,CE会得到一个句柄,然后检测软件就会把句柄设置成0,跟之前我们使用0环保护进程的代码一样,使用下方的代码,如果检测到CE后(aaaa.exe就是CE改的名字),我们给它最高权限1FFFFF,这样就进行了句柄提权

代码说明:

c++ 复制代码
// 函数声明:内核未公开函数,用于从EPROCESS结构体中提取进程的短文件名(如"aaaa.exe")
// 入参:arg1 - 进程的EPROCESS内核对象指针;返回值:char* - 进程的ANSI格式短文件名
const char* PsGetProcessImageFileName(PEPROCESS arg1);

// 进程句柄前置回调函数:所有进程句柄创建/复制操作发生前触发
// 核心逻辑:判断「当前执行回调的进程」是否是"aaaa.exe",如果是则给其句柄请求设置最大访问权限
OB_PREOP_CALLBACK_STATUS PobPreOperationCallback(
	PVOID RegistrationContext,  // 注册回调时传入的自定义参数(你代码中传NULL,无实际作用)
	POB_PRE_OPERATION_INFORMATION OperationInformation  // 句柄操作详情(被操作进程、操作类型等)
)
{
	// 1. IoGetCurrentProcess():内核公开函数,无参数,返回PEPROCESS类型
	//    作用:获取「当前执行该回调函数的进程」的EPROCESS内核对象(即"发起句柄操作的进程",操作方)
	//    关键区别:OperationInformation->Object 是"被操作的进程"(目标方),而此处是"发起操作的进程"
	//    举例:A进程打开B进程句柄 → 此处拿到A进程EPROCESS,OperationInformation->Object拿到B进程EPROCESS
	PEPROCESS pep = IoGetCurrentProcess();

	// 2. 提取当前发起操作进程的短文件名(如"aaaa.exe")
	char* nName = PsGetProcessImageFileName(pep);

	// 3. 不区分大小写判断:当前发起操作的进程是否是目标进程"aaaa.exe"
	if (_strnicmp(nName, "aaaa.exe", strlen("aaaa.exe")) == 0) {
		// 调试打印:确认匹配到目标进程,方便WinDbg验证逻辑
		DbgPrintEx(DPFLTR_IHVDRIVER_ID, 0, "进入nName = %s\n", nName);

		// 4. 设置句柄的DesiredAccess(访问权限掩码)为0x1FFFFF
		//    【0x1FFFFF权限核心讲解(含1F来源)】:
		//    - 等价于PROCESS_ALL_ACCESS(Windows内核宏定义),是进程句柄的"最大权限";
		//    - 数值完整拆解(重点:1F的来源):
		//      PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED + SYNCHRONIZE + 0xFFF
		//      ① STANDARD_RIGHTS_REQUIRED = 0x000F0000(十六进制,对应"标准必需权限",如删除、读写属性等)
		//      ② SYNCHRONIZE = 0x00100000(十六进制,对应"同步权限",允许等待进程结束)
		//      ③ 0xFFF = 0x0000FFF(十六进制,对应"进程专属权限",如读内存、创建线程等)
		//      → 组合计算:0x000F0000 + 0x00100000 = 0x001F0000(这就是"1F"的来源!1对应0x100000,F对应0x0F0000)
		//      → 最终值:0x001F0000 + 0x0000FFF = 0x001FFFFF(简写为0x1FFFFF)
		//    - 1F的大白话含义:1(SYNCHRONIZE同步权限) + F(STANDARD_RIGHTS_REQUIRED标准必需权限),是权限的"基础核心段";
		//    - 包含的核心权限(常用):
		//      PROCESS_VM_READ (0x10)    - 读取进程内存
		//      PROCESS_VM_WRITE (0x20)   - 写入进程内存
		//      PROCESS_TERMINATE (0x01)  - 终止目标进程
		//      PROCESS_CREATE_THREAD (0x02) - 在目标进程创建线程
		//      PROCESS_QUERY_INFORMATION (0x400) - 查询进程信息
		//      PROCESS_SUSPEND_RESUME (0x80000) - 挂起/恢复目标进程
		//    - 效果:设置该值后,aaaa.exe拿到的进程句柄拥有所有操作权限,可无限制操作目标进程

		// CreateHandleInformation:对应"创建进程句柄"(如OpenProcess)操作的权限参数
		OperationInformation->Parameters->CreateHandleInformation.DesiredAccess = 0x1FFFFF;
		// DuplicateHandleInformation:对应"复制进程句柄"(如DuplicateHandle)操作的权限参数
		OperationInformation->Parameters->DuplicateHandleInformation.DesiredAccess = 0x1FFFFF;
	}

	// 【致命坑点】:该函数必须返回OB_PREOP_CALLBACK_STATUS类型值,当前无返回会导致系统蓝屏!
	// 建议补充:return OB_PREOP_SUCCESS;
}

相关推荐
John Song3 小时前
ansible-playbook常用的检查命令
windows·ansible
视觉AI4 小时前
VS Code Remote-SSH 连接Jetson踩坑完整解决记录(网段不通+主机密钥变更双重故障)
运维·网络·人工智能·windows·ssh·边缘计算
mk0157 小时前
20V输入,12V 3A输出 效率96%DCDC降压芯片
驱动开发·单片机·硬件工程·智能硬件·pcb工艺
观远数据11 小时前
从离线开发到实时同步:DataFlow如何支撑企业级数据治理闭环
java·windows·microsoft·excel
绀目澄清11 小时前
私服网游云加速程序劫持流量排查与修复总结
windows·安全
FL162386312911 小时前
Windows手动下载安装配置uv 0.11.29配置国内源含安装包和安装教程
windows·uv
Jelena1577958579211 小时前
淘宝商品详情API接口开发指南:应用市场选品比价实战
windows·microsoft
乖巧的妹子13 小时前
刷题总结知识
linux·服务器·windows
小李云雾13 小时前
LangGraph[2] ---- 控制流与持久化:让图“活”起来
windows·程序人生·ai·langgraph
取经蜗牛13 小时前
Windows 下强制腾讯通 RTX 仅使用有线网卡(静态路由法)
windows