#include <windows.h>
#include <Tlhelp32.h>
#include <iostream>
#include <cstdlib>
using namespace std;
char botNames[12][16];
DWORD GetPIDForProcess (char* process);
void EnableDebugPriv();
DWORD GetDLLBase(char* DllName, DWORD tPid);
void SetRandomBotName(int botNum);
#define PATCH(i, w, l) WriteProcessMemory(hProc, reinterpret_cast<LPVOID>(processBase+i), w, l, &dSize)
void main() {
cout << "VCK Random Colors by Silencer loaded!" << endl << endl;
cout << "Searching VisualCustomKick.exe..." << endl;
if(GetPIDForProcess("VisualCustomKick.exe") == 0) {
cout << "VisualCustomKick.exe was not found..." << endl;
system("Pause");
exit(0);
} else {
cout << "Getting debug privileges..." << endl;
EnableDebugPriv();
cout << "Automatically randomizing now. Just close the program anytime to stop." << endl << endl;
long counter = 1;
int i = 0;
while(true) {
static int refreshDelay;
refreshDelay = 1000;
for(i = 0; i < 12; i++) {
SetRandomBotName(i);
}
static HANDLE hProc;
hProc = OpenProcess(PROCESS_ALL_ACCESS, false, GetPIDForProcess("VisualCustomKick.exe"));
if(hProc) {
cout << "Process opened. ";
static DWORD processBase;
processBase = GetDLLBase("VisualCustomKick.dll", GetPIDForProcess("VisualCustomKick.exe"));
static DWORD dSize;
dSize = 0;
// Bot 1
PATCH(0x00427EC8, botNames[0], 16);
PATCH(0x004F56CC, botNames[0], 16);
// Bot 2
PATCH(0x00427FC7, botNames[1], 16);
PATCH(0x004F57CB, botNames[1], 16);
// Bot 3
PATCH(0x004280C6, botNames[2], 16);
PATCH(0x004F58CA, botNames[2], 16);
// Bot 4
PATCH(0x004281C5, botNames[3], 16);
PATCH(0x004F59C9, botNames[3], 16);
// Bot 5
PATCH(0x004282C4, botNames[4], 16);
PATCH(0x004F5AC8, botNames[4], 16);
// Bot 6
PATCH(0x004283C3, botNames[5], 16);
PATCH(0x004F5BC7, botNames[5], 16);
// Bot 7
PATCH(0x004284C2, botNames[6], 16);
PATCH(0x004F5CC6, botNames[6], 16);
// Bot 8
PATCH(0x004285C1, botNames[7], 16);
PATCH(0x004F5DC5, botNames[7], 16);
// Bot 9
PATCH(0x004286C0, botNames[8], 16);
PATCH(0x004F5EC4, botNames[8], 16);
// Bot 10
PATCH(0x004287BF, botNames[9], 16);
PATCH(0x004F5FC3, botNames[9], 16);
// Bot 11
PATCH(0x004288BE, botNames[10], 16);
PATCH(0x004F60C2, botNames[10], 16);
// Bot 12
PATCH(0x004289BD, botNames[11], 16);
PATCH(0x004F61C1, botNames[11], 16);
cout << "Randomized. (" << counter << ") " << endl;
counter++;
ReadProcessMemory(hProc, reinterpret_cast<LPCVOID>(0x004F62F4), &refreshDelay, 2, &dSize);
CloseHandle(hProc);
cout << "Closed process. Next in " << (refreshDelay / 2) << " milliseconds." << endl << endl;
} else {
cout << "VCK could not be opened..." << endl;
system("Pause");
exit(0);
}
Sleep(refreshDelay / 2);
}
}
exit(1);
}
void SetRandomBotName(int botNum) {
static int i;
botNames[botNum][0] = '|';
botNames[botNum][1] = 'c';
botNames[botNum][2] = 'f';
botNames[botNum][3] = 'f';
for(i = 4; i < 10; i++) {
static int randomnum;
randomnum = rand() % 16;
if(randomnum < 10) {
botNames[botNum][i] = '0' + randomnum;
} else {
botNames[botNum][i] = 'a' - 10 + randomnum;
}
}
botNames[botNum][10] = 'A';
botNames[botNum][11] = 'R';
botNames[botNum][12] = '-';
botNames[botNum][13] = (botNum < 10) ? '0' : '1';
botNames[botNum][14] = '0' + (botNum % 10);
botNames[botNum][15] = '\0';
}
// Queries the ProcessId of a certain process
DWORD GetPIDForProcess (char* process) {
BOOL working = 0;
PROCESSENTRY32 lppe = {0};
DWORD targetPid = 0;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hSnapshot) {
lppe.dwSize = sizeof(lppe);
working=Process32First(hSnapshot, &lppe);
while(working) {
if(_stricmp(lppe.szExeFile, process) == 0) {
targetPid=lppe.th32ProcessID;
break;
}
working = Process32Next(hSnapshot, &lppe);
}
}
CloseHandle(hSnapshot);
return targetPid;
}
// Enables to open other processes
void EnableDebugPriv() {
HANDLE hToken;
LUID sedebugnameValue;
TOKEN_PRIVILEGES tkp;
if(!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) {
return;
}
if(!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &sedebugnameValue)) {
CloseHandle(hToken);
return;
}
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = sedebugnameValue;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if(!AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof tkp, NULL, NULL)) {
CloseHandle(hToken);
}
}
// Gets the base of a dll
DWORD GetDLLBase(char* DllName, DWORD tPid) {
HANDLE snapMod;
MODULEENTRY32 me32;
if(tPid == 0) {
return 0;
}
snapMod = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, tPid);
me32.dwSize = sizeof(MODULEENTRY32);
if (Module32First(snapMod, &me32)) {
do {
if (strcmp(DllName, me32.szModule) == 0) {
CloseHandle(snapMod);
return (DWORD) me32.modBaseAddr;
}
} while(Module32Next(snapMod, &me32));
}
CloseHandle(snapMod);
return 0;
}