void VerifyServiceTask::doRun() { if (checkItem()) return; updateStatus(); if (checkBranch()) return; if (checkUnAuthed()) return; if (m_bCheckFiles && !checkFiles()) return; //do hooks before tools as tools will change to the downloading tool stage if (m_bCheckHooks) checkHooks(); bool end = true; if (m_bCheckTools) end = !checkTools(); finishVerify(UserCore::Misc::VerifyComplete::V_COMPLETE, NULL, end); }
static void dllmainThreadAttach() { static bool bTriedHook = false; if (!bBlackListed && sd && ! bTriedHook) { bTriedHook = true; checkForWPF(); if (!bBlackListed) { ods("Lib: Checking for hooks, potentially injecting"); checkHooks(); } } }
static HMODULE WINAPI MyLoadLibrary(const char *lpFileName) { //TODO: Move logic to HardHook. // Call base without active hook in case of no trampoline. LoadLibraryAType oLoadLibrary = (LoadLibraryAType) hhLoad.call; hhLoad.restore(); HMODULE h = oLoadLibrary(lpFileName); hhLoad.inject(); ods("Lib: Library %s loaded to %p", lpFileName, h); if (! bBlackListed) { checkHooks(); } return h; }
static void dllmainProcAttach(char *procname) { Mutex::init(); char *p = strrchr(procname, '\\'); if (!p) { // No blacklisting if the file has no path } else if (GetProcAddress(NULL, "mumbleSelfDetection") != NULL) { ods("Lib: Attached to overlay helper or Mumble process. Blacklisted - no overlay injection."); bBlackListed = TRUE; bMumble = TRUE; } else { if (dllmainProcAttachCheckProcessIsBlacklisted(procname, p)) { ods("Lib: Process %s is blacklisted - no overlay injection.", procname); return; } } OSVERSIONINFOEX ovi; memset(&ovi, 0, sizeof(ovi)); ovi.dwOSVersionInfoSize = sizeof(ovi); GetVersionEx(reinterpret_cast<OSVERSIONINFO *>(&ovi)); bIsWin8 = (ovi.dwMajorVersion >= 7) || ((ovi.dwMajorVersion == 6) && (ovi.dwBuildNumber >= 9200)); ods("Lib: bIsWin8: %i", bIsWin8); hHookMutex = CreateMutex(NULL, false, "MumbleHookMutex"); if (hHookMutex == NULL) { ods("Lib: CreateMutex failed"); return; } if(!createSharedDataMap()) return; if (! bMumble) { // Hook our own LoadLibrary functions so we notice when a new library (like the d3d ones) is loaded. hhLoad.setup(reinterpret_cast<voidFunc>(LoadLibraryA), reinterpret_cast<voidFunc>(MyLoadLibrary)); hhLoadW.setup(reinterpret_cast<voidFunc>(LoadLibraryW), reinterpret_cast<voidFunc>(MyLoadLibraryW)); checkHooks(true); ods("Lib: Injected into %s", procname); } }