Ejemplo n.º 1
0
void ServiceList::SetActiveService(const QString &name) {
  Service service = GetService(name);

  if (service.getName().isEmpty() || service.getName().isNull()) {
    qCritical() << Q_FUNC_INFO << "Fatal error emptry service - Input";
    return;
  }

  Service active_service = GetActiveService();

  if (active_service.getName().isEmpty() || active_service.getName().isNull()) {
    qCritical() << Q_FUNC_INFO << "Fatal error emptry service - Active";

    service.setActive(true);
    UpdateService(service);

    return;
  }

  active_service.setActive(false);
  UpdateService(active_service);

  service.setActive(true);
  UpdateService(service);
}
 void ServiceLocator::UpdateServices(double aDelta)
 {
     UpdateService(s_Graphics, aDelta);
     UpdateService(s_TextureManager, aDelta);
     UpdateService(s_ShaderManager, aDelta);
     UpdateService(s_InputManager, aDelta);
     UpdateService(s_AudioManager, aDelta);
     UpdateService(s_SceneManager, aDelta);
     UpdateService(s_FontManager, aDelta);
     UpdateService(s_LoadingUI, aDelta);
     UpdateService(s_DebugUI, aDelta);
     UpdateService(s_ShapeCache, aDelta);
 }
VOID UnHookSSDT()
{
	WriteSysLog(LOG_TYPE_DEBUG,L" UnHookSSDT");
	//::KeWaitForSingleObject(&g_DispatchMutex,Executive,KernelMode,FALSE,NULL);
	UpdateService(g_NtMapViewOfSectionID, (PVOID)NtMapViewOfSection);
	sstUnhook_OpenProcess();
	WriteSysLog(LOG_TYPE_DEBUG,L" FinishHookSSDT");

}
Ejemplo n.º 4
0
void
CBINDInstallDlg::RegisterService() {
	SC_HANDLE hSCManager;
	SC_HANDLE hService;
	CString StartName;

	if (m_accountName == LOCAL_SERVICE)
		StartName = LOCAL_SERVICE;
	else
		StartName = ".\\" + m_accountName;
	/*
	 * We need to change the service rather than create it
	 * if the service already exists. Do nothing if we are already
	 * using that account
	 */
	if (m_serviceExists == TRUE) {
		if (m_accountUsed == FALSE) {
			UpdateService(StartName);
			SetItemStatus(IDC_REG_SERVICE);
			return;
		} else {
			SetItemStatus(IDC_REG_SERVICE);
			return;
		}
	}

	SetCurrent(IDS_OPEN_SCM);
	hSCManager= OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
	if (!hSCManager)
		throw(Exception(IDS_ERR_OPEN_SCM, GetErrMessage()));

	DWORD dwStart = SERVICE_DEMAND_START;
	if (m_autoStart)
		dwStart = SERVICE_AUTO_START;

	DWORD dwServiceType = SERVICE_WIN32_OWN_PROCESS;

	CString namedLoc;
	namedLoc.Format("%s\\bin\\named.exe", m_targetDir);

	SetCurrent(IDS_CREATE_SERVICE);
	hService = CreateService(hSCManager, BIND_SERVICE_NAME,
		BIND_DISPLAY_NAME, SERVICE_ALL_ACCESS, dwServiceType, dwStart,
		SERVICE_ERROR_NORMAL, namedLoc, NULL, NULL, NULL, StartName,
		m_accountPassword);

	if (!hService && GetLastError() != ERROR_SERVICE_EXISTS)
		throw(Exception(IDS_ERR_CREATE_SERVICE, GetErrMessage()));

	if (hService)
		CloseServiceHandle(hService);

	if (hSCManager)
		CloseServiceHandle(hSCManager);

	SetItemStatus(IDC_REG_SERVICE);
}
Ejemplo n.º 5
0
/**
*  还原钩子函数
*
*/
NTSTATUS  sstUnhook_OpenProcess()
{
	g_openProcessId = 0;

	UpdateService(SYSCALL_INDEX(ZwOpenProcess),pOriNtOpenProcess );

	if(m_MDL)
	{
		MmUnmapLockedPages(m_Mapped,m_MDL);
		IoFreeMdl(m_MDL);
	}

	return STATUS_SUCCESS;
}
Ejemplo n.º 6
0
/**
*  设置钩子函数
*
*/
NTSTATUS  sstHook_OpenProcess()
{
    if(m_MDL == NULL)
	{
		m_MDL = MmCreateMdl(NULL,KeServiceDescriptorTable->ServiceTableBase,KeServiceDescriptorTable->NumberOfService*4);

		if(!m_MDL)
			return STATUS_UNSUCCESSFUL;

		MmBuildMdlForNonPagedPool(m_MDL);
		m_MDL->MdlFlags = m_MDL->MdlFlags | MDL_MAPPED_TO_SYSTEM_VA;
		m_Mapped = (PVOID *)MmMapLockedPages(m_MDL, KernelMode);
		HOOK_SYSCALL(ZwOpenProcess,MyNtOpenProcess,pOriNtOpenProcess);
		g_openProcessId = (ULONG)SYSTEMSERVICE(ZwOpenProcess);

		return STATUS_SUCCESS;
	}

	UpdateService(SYSCALL_INDEX(ZwOpenProcess),(PVOID)MyNtOpenProcess);
	return STATUS_SUCCESS;
}
/**
*  检查钩子状态函数
*/
bool checkHookSafe()
{
	if(g_count <= 6 )
	{   		
		if(!_checkHookSafeMapV((PVOID)MyMapViewOfSection, g_NtMapViewOfSectionID) )
		{
			UpdateService(g_NtMapViewOfSectionID, (PVOID)MyMapViewOfSection);
			g_count++;
		}
	    if(!_checkHookSafeOpenP())
		{
			sstHook_OpenProcess();
			g_count++;
		}
		return true;
	}
	else
	{
		g_count=0;
		return false;
	}	

}
/**
*  设置钩子和卸载钩子函数
*/
VOID HookSSDT()
{
	NtMapViewOfSection = (NTMAPVIEWOFSECTION)UpdateService(g_NtMapViewOfSectionID, (PVOID)MyMapViewOfSection);
	sstHook_OpenProcess();
}
VOID UnHookSSDT()
{
	UpdateService(g_NtMapViewOfSectionID, (PVOID)NtMapViewOfSection);
	sstUnhook_OpenProcess();
}