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

📄 usbcontrol.cpp

📁 Also since the domain name--against which the retrieved domain name is to be matched--is currently h
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		}
		
/*			
		//Domain Matching Logic
		for(DWORD i=0; i<szDomainNames; i++)
		{
			if(_tcscmp(buffer,(LPCTSTR)&cbDomainNames[i]) != 0)
			{
				IsFixedDomain == FALSE;
			}
		}
		if(!IsFixedDomain)
		{
			swprintf_s(pPrintBuf,L"Not Matched Domain : %s\n",buffer);
			OutputDebugString(pPrintBuf);
		}*/

	  } else {
		OutputDebugString (L"\nMissing authenticating domain information. ");
		LsaFreeReturnBuffer(sessionData);
		return;
	  }
	  // Free the memory returned by the LSA.
	  LsaFreeReturnBuffer(sessionData);
	  return;
}

//Build Domain Names that are already present
BOOL CUSBControl::BuildDomainNames()
{
	//Variable to maintain the number of domain names present
	DWORD counter = 0;

	//size of buffer
	DWORD szBuf = 0;

	//Loop Variable
	DWORD i = 0;

	//Domain Name buffer
	TCHAR *cbComputerName = NULL;

	//Message
	TCHAR szMsg[260];

	//Initialize the domain NT AUTHORITY
	_tcscpy(cbDomainNames[counter++],NT_AUTHORITY_DOMAIN);

	//Initialize the domain NTLM
	_tcscpy(cbDomainNames[counter++],NTLM_DOMAIN);

	if(!GetComputerNameEx(ComputerNameNetBIOS,NULL,&szBuf))
	{
		if(GetLastError() == ERROR_MORE_DATA)
		{
			cbComputerName = (TCHAR*)malloc(szBuf * sizeof(TCHAR));
			if(cbComputerName == NULL)
			{
				OutputDebugString(L"cbComputerName :: malloc Failed");
				return FALSE;
			}
			if(!GetComputerNameEx(ComputerNameNetBIOS,cbComputerName,&szBuf))
			{
				OutputDebugString(L"GetComputerNameEx Failed");
				return FALSE;
			}
			else
			{
				swprintf_s(szMsg,L"Domain Name : %s",cbComputerName);
				OutputDebugString(szMsg);
				_tcscpy(cbDomainNames[counter++],cbComputerName);
				szDomainNames = counter;

				for(i=0; i<counter; i++)
				{
					swprintf_s(szMsg,L"Domain Name%d : %s\n",i,cbDomainNames[i]);
					OutputDebugString(szMsg);
				}
			}
		}
		else
		{
			OutputDebugString(L"GetComputerNameEx Failed for the First Time");
			return FALSE;
		}
	}

	return TRUE;
}


bool CUSBControl::InstallDriver( SC_HANDLE SchSCManager, LPCTSTR DriverName, LPCTSTR ServiceExe )
{
    SC_HANDLE  schService;
	DWORD err;

   


    schService = CreateService( SchSCManager,          // SCManager database
                                DriverName,           // name of service
                                DriverName,           // name to display
                                SERVICE_ALL_ACCESS,    // desired access
                                SERVICE_KERNEL_DRIVER, // service type
                                SERVICE_DEMAND_START,  // start type
                                SERVICE_ERROR_NORMAL,  // error control type
                                ServiceExe,            // service's binary
                                NULL,                  // no load ordering group
                                NULL,                  // no tag identifier
                                NULL,                  // no dependencies
                                NULL,                  // LocalSystem account
                                NULL                   // no password
                                );
    if ( schService == NULL )
    {
		OutputDebugString(L"\nInside InstallDriver: CreateService Failed");
		return FALSE;
	}
    CloseServiceHandle( schService );

    return TRUE;
}

bool CUSBControl::StartDriver( IN SC_HANDLE SchSCManager, IN LPCTSTR DriverName )
{
    SC_HANDLE  schService;
    BOOL       ret;

    schService = OpenService( SchSCManager,
                              DriverName,
                              SERVICE_ALL_ACCESS
                              );
    if ( schService == NULL )
	{    
		OutputDebugString(L"\nInside Start Driver:Open Service Failed");	
		return FALSE;
	}
    ret = StartService( schService, 0, NULL )
       || GetLastError() == ERROR_SERVICE_ALREADY_RUNNING;
	
	


    CloseServiceHandle( schService );

    return ret;
}

bool CUSBControl::OpenDevice( IN LPCTSTR DriverName, HANDLE * lphDevice )
{
    TCHAR    completeDeviceName[64];
    HANDLE   hDevice;

   
    wsprintf( completeDeviceName, TEXT("\\\\.\\%s"), DriverName );

    hDevice = CreateFile( completeDeviceName,
                          GENERIC_READ | GENERIC_WRITE,
                          0,
                          NULL,
                          OPEN_EXISTING,
                          FILE_ATTRIBUTE_NORMAL,
                          NULL
                          );
    if ( hDevice == ((HANDLE)-1) )
	{
		OutputDebugString(L"\nInside OpenDevice: CreateFile Failed!");
		return FALSE;
	}
	
	if ( lphDevice )
		*lphDevice = hDevice;
	else
	    CloseHandle( hDevice );

    return TRUE;
}

bool CUSBControl::StopDriver( IN SC_HANDLE SchSCManager, IN LPCTSTR DriverName )
{
    SC_HANDLE       schService;
    BOOL            ret;
    SERVICE_STATUS  serviceStatus;

    schService = OpenService( SchSCManager, DriverName, SERVICE_ALL_ACCESS );
    if ( schService == NULL )
	{
		OutputDebugString(L"\nInside StopDriver: Open Service Failed!!");
		return FALSE;
	}
    ret = ControlService( schService, SERVICE_CONTROL_STOP, &serviceStatus );
	if(ret==0)
		OutputDebugString(L"\nInside StopDriver: ContriolService Failed");

    CloseServiceHandle( schService );

    return ret;
}

bool CUSBControl::RemoveDriver( IN SC_HANDLE SchSCManager, IN LPCTSTR DriverName )
{
    SC_HANDLE  schService;
    BOOL       ret;

    schService = OpenService( SchSCManager,
                              DriverName,
                              SERVICE_ALL_ACCESS
                              );

    if ( schService == NULL )
	{
		OutputDebugString(L"\nInside Remove Driver:Open Service Failed");	
		return FALSE;
	}
    ret = DeleteService( schService );
	if(ret==0)
	{
		OutputDebugString(L"\nInside Remove Driver:Delete Service Failed");	
	}
    CloseServiceHandle( schService );

    return ret;
}

bool CUSBControl::UnloadDeviceDriver( const TCHAR * Name )
{
	SC_HANDLE	schSCManager;

	schSCManager = OpenSCManager(	NULL,                 // machine (NULL == local)
                              		NULL,                 // database (NULL == default)
									SC_MANAGER_ALL_ACCESS // access required
								);
	if(schSCManager == NULL)
		OutputDebugString(L"\nOpenSCManager Failed");

	StopDriver( schSCManager, Name );
	RemoveDriver( schSCManager, Name );
	 
	CloseServiceHandle( schSCManager );

	return TRUE;
}


bool CUSBControl::LoadDeviceDriver( const TCHAR * Name, const TCHAR * DriverPath, HANDLE * lphDevice )
{
	SC_HANDLE	schSCManager=NULL;
	BOOL		okay;

	schSCManager = OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS );
	if(schSCManager == NULL)
		OutputDebugString(L"\nOpenSCManager Failed");

	
	RemoveDriver( schSCManager, Name );


	InstallDriver( schSCManager, Name, DriverPath );


	StartDriver( schSCManager, Name );


	okay = OpenDevice( Name, lphDevice );

 	CloseServiceHandle( schSCManager );

	return okay;
}


DWORD CUSBControl::Hook_Drives(DWORD MaxDriveSet, DWORD CurDriveSet ) 
{
	DWORD nb;
	
	
	if ( ! DeviceIoControl(	SysHandle, EDDrv_setdrives,
							&CurDriveSet, sizeof
							CurDriveSet,
							&CurDriveSet, sizeof CurDriveSet,
							&nb, NULL ) )
		
	return 0;

	
	
	return CurDriveSet;
}

void CUSBControl::DriverStop(void)
{
	unsigned long nb;	
	unsigned long irpcount;

	OutputDebugString(L"\nInside DriverStop");
	
	
	if ( ! DeviceIoControl(	SysHandle,EDDrv_stopfilter,NULL, 0, NULL, 0, &nb, NULL ) )
	{
			OutputDebugString(L"\n EDDrv_stopfilter failed ");
			return;
	}

	if ( ! DeviceIoControl(	SysHandle, EDDrv_unloadquery,NULL, 0, NULL, 0,&irpcount, NULL ) ) 
	{
			OutputDebugString(L"\n EDDrv_unloadquery failed ");		
			return;
	}

	
		
	if( irpcount ) 
	{
		OutputDebugString(L"\n Cannot Unload Driver;IRPs dangling");
			return; 
	} 
	else 
	{
		if ( ! UnloadDeviceDriver( SYS_NAME ) )  
		{
			OutputDebugString(L"\n Unloading Driver Failed");
		}
	}


	
	return;

}

void CUSBControl::DriverStart(void)
{
	
	
	unsigned long versionNumber;
	unsigned long nb;
	FILTER FilterDefinition; 
	BOOLEAN 	TimeIsDuration;
	DWORD MaxDriveSet,CurDriveSet; 

	OutputDebugString(L"\nInside DriverStart");
	if ( ! LoadDeviceDriver( SYS_NAME, DriverPath, &SysHandle ) )  
	{
		OutputDebugString(L"\n LoadDeviceDriver() Failed");
		
	}
	
	
	
	if ( ! DeviceIoControl(	SysHandle, EDDrv_startfilter,NULL, 0, NULL, 0, &nb, NULL ) )
	{
		OutputDebugString(L"\n Start filterinig failed\n");
		
	}	

	MaxDriveSet=63;
	
	CurDriveSet=FinalUSBData;

	Hook_Drives(MaxDriveSet,CurDriveSet ); 


	
	fflush(stdin);
	
	
	
	return ;
}

void CUSBControl::DriverEnable(bool Enable)
{
	unsigned long nb;
	if(Enable==TRUE)
	{
		if ( ! DeviceIoControl(	SysHandle, EDDrv_uservalid,NULL, 0, NULL, 0, &nb, NULL ) )
		{
			printf("user validation failed\n");
			
		}
	}
	else 
	{
		if ( ! DeviceIoControl(	SysHandle, EDDrv_userinvalid,NULL, 0, NULL, 0, &nb, NULL ) )
		{
			printf("user (in)validation failed\n");
			
		}	
	
	}
	return;
}
VOID CUSBControl::setUSBDrives(DWORD USBDrives)
{
	this->USBDrives = USBDrives;
}

DWORD CUSBControl::getUSBDrives()
{
	return this->USBDrives;
}

⌨️ 快捷键说明

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