aboutsummaryrefslogtreecommitdiff
path: root/Launcher/Launcher.cpp
blob: 5ea62f5d0cbc5ad3c7c4ed33b95b116a1ba0895a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <Windows.h>
#include <detours.h>

int main()
{
    std::string wow_directory = R"(C:\Users\alphaomega\Documents\World-of-Warcraft-3.3.5a.12340-enUS-WIN\)";
    char launcherDirectory[MAX_PATH] = { 0 };
    GetModuleFileNameA(NULL, launcherDirectory, MAX_PATH);
    size_t lastBackslash = ((std::string)launcherDirectory).rfind('\\');
    std::string lpDllName = ((std::string)launcherDirectory).substr(0, lastBackslash + 1) + "Hook.dll";

    STARTUPINFOA lpStartupInfo;
    ZeroMemory(&lpStartupInfo, sizeof(lpStartupInfo));
    PROCESS_INFORMATION lpProcessInformation;
    ZeroMemory(&lpProcessInformation, sizeof(lpProcessInformation));
    lpStartupInfo.cb = sizeof(lpStartupInfo);

    DetourCreateProcessWithDllA(
        (wow_directory + "Wow.exe").c_str(), // lpApplicationName
        NULL, // lpCommandLine,
        NULL, // lpProcessAttributes,
        NULL, // lpThreadAttributes,
        TRUE, // bInheritHandles,
        CREATE_DEFAULT_ERROR_MODE | CREATE_SUSPENDED, // dwCreationFlags,
        NULL, // lpEnvironment,
        wow_directory.c_str(), // lpCurrentDirectory,
        &lpStartupInfo, // lpStartupInfo
        &lpProcessInformation, // lpProcessInformation
        lpDllName.c_str(), // lpDllName
        NULL // pfCreateProcessA
    );
    ResumeThread(lpProcessInformation.hThread);
    return 0;
}