⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loaddrv.h

📁 实现了在arp欺骗环境下
💻 H
字号:
#define DriverPath	"%SystemRoot%\\system32\\drivers\\npf.sys"
#define ServiceName	"npf"


// 安装驱动并启动服务
// lpszDriverPath:  驱动程序路径
// lpszServiceName: 服务名
BOOL StartDriver(LPCTSTR lpszDriverPath, LPCTSTR lpszServiceName)
{
	SC_HANDLE hSCManager;        // 服务控制管理器句柄
	SC_HANDLE hService;          // 服务句柄
	BOOL bResult = FALSE;        // 返回值
	
	// 打开服务控制管理器
	hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
	if (NULL == hSCManager) {
		printf("OpenSCManager failed (%d)\n", GetLastError());
		return bResult;
	}
	
	if (hSCManager)	{
		// 创建服务
		hService = CreateService(
			hSCManager,
			lpszServiceName,
			lpszServiceName,
			SERVICE_ALL_ACCESS,
			SERVICE_KERNEL_DRIVER,
			SERVICE_DEMAND_START,
			SERVICE_ERROR_NORMAL,
			lpszDriverPath,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL);
		if (hService == NULL) {
			if (::GetLastError() == ERROR_SERVICE_EXISTS) {
				hService = ::OpenService(hSCManager, lpszServiceName, SERVICE_ALL_ACCESS);
			}
		}
		if (hService) {
			// 启动服务
			bResult = StartService(hService, 0, NULL);
			// 关闭服务句柄
			CloseServiceHandle(hService);
		}
		// 关闭服务控制管理器句柄
		CloseServiceHandle(hSCManager);
	}
	return bResult;
}

BOOL DeleteDriver(LPCTSTR lpszServiceName)
{
	SC_HANDLE hSCManager;        // 服务控制管理器句柄
	SC_HANDLE hService;          // 服务句柄
	BOOL bResult = FALSE;        // 返回值
	
	// 打开服务控制管理器
	hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
	if (NULL == hSCManager) {
		printf("OpenSCManager failed (%d)\n", GetLastError());
		return bResult;
	}

	// Get a handle to the service.
	hService = OpenService( 
	hSCManager,       // SCM database 
	lpszServiceName,          // name of service 
	DELETE);            // need delete access 
	
	if (hService == NULL) { 
		printf("OpenService failed (%d)\n", GetLastError()); 
		CloseServiceHandle(hSCManager);
		return bResult;
	}
	   
	// Delete the service.
	if (! (bResult=DeleteService(hService)) ) {
		printf("DeleteService failed (%d)\n", GetLastError()); 
	}
	else printf("Service deleted successfully\n"); 
	   
	CloseServiceHandle(hService); 
	CloseServiceHandle(hSCManager);
	return bResult;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -