Sorry for wrong title no menu base i mean but its not that hard to add hotkeys.
This is probally the way Zerohead does it.
I used this a while ago when i was coding for warrock. I ripped this out of my more advanced source. Didn't test it if it has errors.
Probally the pattern's are wrong update them and the hack should work.
Source.cpp
Code:
#include <windows.h>
#include <stdio.h>
#include "Pattern.h"
void SearchPatterns(void)
{
Sleep(200);
dwStartAddress = 0x400000;
do {
dwStartAddress = (DWORD)GetModuleHandle("Process here ;)");
Sleep(10);
}while(!dwStartAddress);
dwSize = 0x500000;
DWORD dwPlayerPointer = FindPattern((PBYTE)"\x8B\x0D\x48\x22\xBC\x00\x85\xC9\x74\x07\x6A\x00};", "xx??xxxxxxxx", 2, true);
DWORD dwServerPointer = FindPattern((PBYTE)"\x8B\x0D\x28\xCE\xAB\x00\x8B\x89\xE4\xB7\x11\x00};", "xx??xxxx??xx", 2, true);
DWORD dwFastAmmo = FindPattern((PBYTE)"\xB9\x34\x6D\xA4\x00\xD9\x5D\xE0\xE8\x33\xED\xFF\xFF};", "x??xxxxxx?xxx", 1, true);
DWORD dwFastMedic = FindPattern((PBYTE)"\xB9\x38\x6D\xA4\x00\xE8\xE8\xEC\xFF\xFF\xC6\x45\xF2\x01};", "x??xxx?xxxxxxx", 1, true);
DWORD dwFastFlag = FindPattern((PBYTE)"\xB9\x40\x6D\xA4\x00\xE8\x20\xD1\xFC\xFF\xA1\x40\x6D\xA4\x00};", "x??xxx?xxxx??xx", 1, true);
for(;;){
{
DWORD dwPlayerPtr = *(DWORD*)dwPlayerPointer;
if(dwPlayerPtr != 0){
{
*(float*)dwFastMedic = 5.0f;
*(float*)dwFastFlag = 10.0f;
*(float*)dwFastAmmo = 12.5f;}
}
}
DWORD dwSrvrPtr=*(DWORD*)dwServerPointer;
if(dwSrvrPtr!=0){
}
Sleep(20);}}
BOOL WINAPI DllMain ( HMODULE hDll, DWORD dwReason, LPVOID lpReserved )
{
DisableThreadLibraryCalls(hDll);
if (dwReason==DLL_PROCESS_ATTACH)
{
MessageBox(NULL, L"Credits: Bastamanga Thanks to: Some guy i dont remember", L"[UC] Public", MB_OK);
WinExec ("explorer http://mpgh.net",1);
CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)SearchPatterns, NULL, NULL, NULL);
}
return TRUE;
}
Patten.h
Code:
DWORD dwSize;
DWORD dwStartAddress;
BOOL bCompare(const BYTE* pData, const BYTE* bMask, const char* szMask)
{
for(;*szMask;++szMask,++pData,++bMask)
{
if(*szMask == 'x' && *pData != *bMask)
return 0;
}
return (*szMask)==NULL;
}
DWORD FindPattern(BYTE *bMask, char * szMask, int codeOffset, BOOL extract)
{
for(DWORD i = 0; i < dwSize; i++)
{
if(bCompare((BYTE*)(dwStartAddress + i),bMask,szMask))
{
if(extract)
{
return *(DWORD*)(dwStartAddress + i + codeOffset);
}
else
{
return (DWORD)(dwStartAddress + i + codeOffset);
}
}
}
return NULL;
}
Credits:
Me (Joered333 aka Bastamanga)
Techguy
NoName