Example #1
0
BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
  UNREFERENCED_PARAMETER(lpReserved);

  if (NULL == GetModuleHandleA("YDTrigger.dll"))
    return TRUE;
  if (!check())
    return TRUE;

  switch(ul_reason_for_call)
  {
  case DLL_PROCESS_ATTACH:
  case DLL_THREAD_ATTACH:
    {
      DisableThreadLibraryCalls(hModule);
      Detoured_Init(hModule); 
	  SetDllPath(hModule);
      GUIID_Table_Create();
      GUIID_Table_Init();
      All_Hook();
    }
    break;
  case DLL_PROCESS_DETACH:
  case DLL_THREAD_DETACH:
    {
      All_Unhook();  
      GUIID_Table_Destory();
    }
    break;
  }

  return TRUE;
}
Example #2
0
bool CGCServiceApp::start(int argc, char** argv)
{
	DeleteFile("desura_service_old.exe");

	std::string wdir;

	for (size_t x=0; x<(size_t)argc; x++)
	{
		if (argv[x] && std::string(argv[x]) == "-wdir")
		{
			if (x+1 <= (size_t)argc && argv[x+1])
				wdir = argv[x+1];
		}
	}

	if (!SetDllPath(wdir.size()?wdir.c_str():NULL))
	{
		log("Failed to set dll path. :(\n");
		return false;
	}

	DeleteFile("desura_service_old.exe");
	DeleteFile("desura_old.exe");

#if !defined(DEBUG) && defined(DESURA_OFFICIAL_BUILD)
	char message[255] = {0};
	if (ValidateCert(L".\\bin\\servicecore.dll", message, 255) != ERROR_SUCCESS)
	{
		log("Failed cert check on servicecore.dll: ");
		log(message);
		log("\n");
		return false;
	}
#endif
	if (!m_SCDLL.load("servicecore.dll")) 
	{
		log("Failed to load servicecore.dll.\n");
		return false;
	}

	FactoryBuilderFN factory = m_SCDLL.getFunction<FactoryBuilderFN>("FactoryBuilderSC");

	if (!factory)
	{
		log("Failed to load FactoryBuilderSC function.\n");
		return false;
	}

	m_pServiceCore = (ServiceCoreI*)factory(SERVICE_CORE);

	if (!m_pServiceCore)
	{
		log("Failed to create service core.\n");
		return false;
	}

	m_pServiceCore->setDisconnectCallback(&OnPipeDisconnect);
	m_pServiceCore->setCrashSettingCallback(&SetCrashSettings);
	m_pServiceCore->startPipe();

    return true;
}