- // Process the VCMP command line.
- sprintf_s(commandLine, 128, "-c -h %s -c -p %u -n %s -z %s", IP, PORT, NAME, PASSWORD);
- sprintf_s(commandLine, 128, "-c -h %s -c -p %u -n %s", IP, PORT, NAME);
+ // Process the VCMP command line.
+ sprintf_s(commandLine, 128, "-c -h %s -c -p %u -n %s -z %s", IP, PORT, NAME, PASSWORD);
+ sprintf_s(commandLine, 128, "-c -h %s -c -p %u -n %s", IP, PORT, NAME);
- char GTADriectory[MAX_PATH];
- strcpy_s(GTADriectory, MAX_PATH, GTA_VC_EXE);
- char *pos = strrchr(GTADriectory, '\\');
+ char GTADriectory[MAX_PATH];
+ strcpy_s(GTADriectory, MAX_PATH, GTA_VC_EXE);
+ char *pos = strrchr(GTADriectory, '\\');
- STARTUPINFO si = { sizeof(si) };
- PROCESS_INFORMATION pi;
- if (CreateProcess(GTA_VC_EXE, commandLine, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, GTADriectory, &si, &pi))
- // Alloc memory in GTA process.
- size_t dllLength = strlen(VCMP_GAME_DLL);
- LPVOID lpMem = VirtualAllocEx(pi.hProcess, NULL, dllLength, MEM_COMMIT, PAGE_READWRITE);
- // Wirte VCMP dll path to GTA process.
- if (WriteProcessMemory(pi.hProcess, lpMem, VCMP_GAME_DLL, dllLength, NULL))
- // Get kernel32.dll handle.
- HMODULE hKernel = GetModuleHandle("kernel32.dll");
- // Get LoadLibraryA address.
- FARPROC fnLoadLibraryA = GetProcAddress(hKernel, "LoadLibraryA");
- // Create remote thread in GTA process to inject VCMP dll.
- HANDLE hInjectThread = CreateRemoteThread(pi.hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)fnLoadLibraryA, lpMem, 0, NULL);
- // Wiat for the inject thread.
- if (WaitForSingleObject(hInjectThread, 10000) == WAIT_OBJECT_0)
- ResumeThread(pi.hThread);
- CloseHandle(hInjectThread);
- CloseHandle(pi.hProcess);
- CloseHandle(pi.hThread);
- printf("Injected thread hung!\n");
- printf("CreateRemoteThread failed! (%u)\n", GetLastError());
- printf("GetProcAddress failed! (%u)\n", GetLastError());
- printf("GetModuleHandle failed! (%u)\n", GetLastError());
- printf("WriteProcessMemory failed! (%u)\n", GetLastError());
- printf("VirtualAllocEx failed! (%u)\n", GetLastError());
- printf("CreateProcess failed! (%u)\n", GetLastError());
+ STARTUPINFO si = { sizeof(si) };
+ PROCESS_INFORMATION pi;
+ if (CreateProcess(GTA_VC_EXE, commandLine, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, GTADriectory, &si, &pi))
+ // Alloc memory in GTA process.
+ size_t dllLength = strlen(VCMP_GAME_DLL) + 1;
+ LPVOID lpMem = VirtualAllocEx(pi.hProcess, NULL, dllLength, MEM_COMMIT, PAGE_READWRITE);
+ // Wirte VCMP dll path to GTA process.
+ if (WriteProcessMemory(pi.hProcess, lpMem, VCMP_GAME_DLL, dllLength, NULL))
+ // Get kernel32.dll handle.
+ HMODULE hKernel = GetModuleHandle("kernel32.dll");
+ // Get LoadLibraryA address.
+ FARPROC fnLoadLibraryA = GetProcAddress(hKernel, "LoadLibraryA");
+ // Create remote thread in GTA process to inject VCMP dll.
+ HANDLE hInjectThread = CreateRemoteThread(pi.hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)fnLoadLibraryA, lpMem, 0, NULL);
+ // Wiat for the inject thread.
+ if (WaitForSingleObject(hInjectThread, 10000) == WAIT_OBJECT_0)
+ ResumeThread(pi.hThread);
+ CloseHandle(hInjectThread);
+ CloseHandle(pi.hProcess);
+ CloseHandle(pi.hThread);
+ printf("Injected thread hung!\n");
+ printf("CreateRemoteThread failed! (%u)\n", GetLastError());
+ printf("GetProcAddress failed! (%u)\n", GetLastError());
+ printf("GetModuleHandle failed! (%u)\n", GetLastError());
+ printf("WriteProcessMemory failed! (%u)\n", GetLastError());
+ printf("VirtualAllocEx failed! (%u)\n", GetLastError());
+ printf("CreateProcess failed! (%u)\n", GetLastError());