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 16:22:29

【Open-AutoGLM跨境自动化革命】:揭秘AI如何重构全球贸易流程

第一章&#xff1a;Open-AutoGLM跨境自动化革命的背景与意义在全球数字化进程加速的背景下&#xff0c;跨境业务的复杂性与数据异构性日益凸显。传统自动化工具在面对多语言、多系统、多合规要求的国际场景时&#xff0c;往往表现出适应性差、集成成本高、响应速度慢等瓶颈。Op…

作者头像 李华
网站建设 2026/4/18 6:39:36

你以為的『優化』正在讓程式慢 300%:C++ 類型系統的 7 個謊言

你以為的『優化』正在讓程式慢 300%&#xff1a;C 類型系統的 7 個謊言前言&#xff1a;性能的幻象與現實在C開發者的世界中&#xff0c;「類型安全」與「零成本抽象」幾乎成為信仰條款。我們被教導要相信編譯器的智慧&#xff0c;相信現代C的優雅設計能自動轉化為高效執行碼。…

作者头像 李华
网站建设 2026/4/18 6:39:53

C++ 類型系統:從初學者到大師的唯一障礙,也是唯一階梯

C 類型系統&#xff1a;從初學者到大師的唯一障礙&#xff0c;也是唯一階梯引言&#xff1a;類型&#xff0c;既是束縛也是力量在C的世界中&#xff0c;類型系統如同一把雙刃劍。對初學者而言&#xff0c;它是令人困惑的迷宮&#xff0c;充滿了const、volatile、引用、指針、模…

作者头像 李华
网站建设 2026/4/18 3:14:35

错过后悔十年:Open-AutoGLM农业物联网适配技术红利期只剩最后18个月

第一章&#xff1a;Open-AutoGLM农业物联网适配技术的现状与机遇随着边缘计算与大模型技术的深度融合&#xff0c;Open-AutoGLM在农业物联网&#xff08;Agri-IoT&#xff09;场景中的适配正成为智慧农业发展的关键突破口。该技术通过轻量化推理框架与自适应传感协议&#xff0…

作者头像 李华
网站建设 2026/4/17 6:36:35

Open-AutoGLM核心技术解析,掌握数字孪生动态控制的黄金法则

第一章&#xff1a;Open-AutoGLM 数字孪生联动控制Open-AutoGLM 是一种基于大语言模型与自动化控制深度融合的开放架构&#xff0c;专为数字孪生系统设计&#xff0c;支持物理实体与虚拟模型之间的实时数据同步与智能决策联动。该架构通过语义解析、行为建模和动态反馈机制&…

作者头像 李华
网站建设 2026/4/18 3:50:57

Gitee:中国开发者生态的基石与创新引擎

Gitee&#xff1a;中国开发者生态的基石与创新引擎 在全球数字化转型加速的背景下&#xff0c;中国本土开发者正面临着前所未有的机遇与挑战。Gitee作为国内领先的企业级代码托管平台&#xff0c;凭借其独特的本土化优势和创新服务体系&#xff0c;正在重塑中国软件开发行业的协…

作者头像 李华