Win10 EPROCESS 断链

本文介绍了如何在Win10 x64系统中动态获取ActiveProcessLinksOffset来实现EPROCESS断链,以隐藏进程。通过参考GitHub项目HideProcess,详细阐述了隐藏加载器自身的过程以及驱动加载的步骤。
摘要由CSDN通过智能技术生成

介绍

参考了 https://github.com/landhb/HideProcess/
动态获取 ActiveProcessLinksOffset ,可兼容不同版本的win10 x64系统。

运行结果

隐藏加载器自身

在这里插入图片描述

隐藏成功

在这里插入图片描述

驱动加载

#include <windows.h>  
#include <winsvc.h>  
#include <conio.h>  
#include <stdio.h>
#include <winioctl.h>

#define DRIVER_NAME L"HideProcess"
#define DRIVER_PATH L"HideProcess.sys"
#define LINK_NAME "\\\\.\\HideProcessLnk"

#define IOCTRL_BASE 0x800

#define MYIOCTRL_CODE(i) \
	CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTRL_BASE+i, METHOD_BUFFERED,FILE_ANY_ACCESS)

#define CTL_HIDEPROCESS MYIOCTRL_CODE(0)

// 加载驱动
BOOL LoadDriver(PCWSTR lpszDriverName, PCWSTR lpszDriverPath)
{
   
	// 获取驱动完整路径
	WCHAR szDriverFullPath[MAX_PATH] = {
    0 };
	GetFullPathNameW(lpszDriverPath, MAX_PATH, szDriverFullPath, NULL);
	//printf("%s\n", szDriverFullPath);
	// 打开服务控制管理器
	SC_HANDLE hServiceMgr = NULL; // SCM管理器句柄	
	hServiceMgr = OpenSCManagerW(NULL, NULL, SC_MANAGER_ALL_ACCESS);
	if (NULL == hServiceMgr)
	{
   
		printf("OpenSCManagerW failed, %d\n", GetLastError());
		return FALSE;
	}
	//printf("打开服务控制管理器成功.\n");
	// 创建驱动服务
	SC_HANDLE hServiceDDK = NULL; // NT驱动程序服务句柄
	hServiceDDK = CreateServiceW(
		hServiceMgr,
		lpszDriverName,
		lpszDriverName,
		SERVICE_ALL_ACCESS,
		SERVICE_KERNEL_DRIVER,
		SERVICE_DEMAND_START,
		SERVICE_ERROR_IGNORE,
		szDriverFullPath,
		NULL,
		NULL,
		NULL,
		NULL,
		NULL);
	if (NULL == hServiceDDK)
	{
   
		DWORD dwErr = GetLastError();
		if (dwErr != ERROR_IO_PENDING && dwErr != ERROR_SERVICE_EXISTS)
		{
   
			printf("CreateService failed, %d\n", dwErr);
			return FALSE;
		}
	}
	//printf("创建驱动服务成功.\n");
	// 驱动服务已经创建,打开服务
	hServiceDDK = OpenServiceW(hServiceMgr, lpszDriverName, SERVICE_ALL_ACCESS);
	if (!StartService(hServiceDDK, NULL, NULL))
	{
   
		DWORD dwErr = GetLastError();
		if (dwErr != ERROR_SERVICE_ALREADY_RUNNING)
		{
   
			printf("OpenService failed, %d\n", dwErr);
			return FALSE;
		}
	}
	//printf("运行驱动服务成功.\n");
	if (hServiceDDK)
	{
   
		CloseServiceHandle(hServiceDDK);
	}
	if (hServiceMgr)
	{
   
		CloseServiceHandle<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值