Bypass 28_4
Now, i Added Bypass 28_3 in my Weapon Hack but i still got Client Error 28_4
any one Give me Hint or Pattern
any one Give me Hint or Pattern
typedef struct _WEAPON
{
unsigned char Data[0xC3C0];
} WEAPON, *PWEAPON;
PWEAPON pOldWeapons[1600];
PWEAPON GetWeaponByIndex(int index)
{
return pOldWeapons[index];
}
void CreateBackup(DWORD dwCShell, DWORD dwWeaponMgr)
{
DWORD pWeaponMgr = *(DWORD*)(dwCShell + dwWeaponMgr );
for(int i = 0; i < 1600; i++)
{
DWORD dwWeapon = *(DWORD*)(pWeaponMgr + (4 * i));
if (dwWeapon)
{
pOldWeapons[i] = new WEAPON;
memcpy(pOldWeapons[i], (void*)(dwWeapon), sizeof(WEAPON));
}
}
}

typedef struct _WEAPON
{
unsigned char Data[20772]; //Current Weapon Size 05.01.2019
} WEAPON, *PWEAPON;
PWEAPON pOldWeapons[3071]; //Current Weapon Count 05.01.2019
PWEAPON GetWeaponByIndex(int index)
{
return pOldWeapons[index];
}
void MakeCall( BYTE* paddress, DWORD yourfunction, DWORD dwlen )
{
DWORD dwOldProtect, dwBkup, dwRelAddr;
VirtualProtect(paddress, dwlen, PAGE_EXECUTE_READWRITE, &dwOldProtect);
dwRelAddr = (DWORD) (yourfunction - (DWORD) paddress) - 5;
*paddress = 0xE8;
*((DWORD*) (paddress + 0x1)) = dwRelAddr;
for(DWORD x = 0x5; x < dwlen; x++) *(paddress + x) = 0x90;
VirtualProtect(paddress, dwlen, dwOldProtect, &dwBkup);
return;
}
void CreateBackup( DWORD dwCShell, DWORD dwWeaponMgr )
{
DWORD pWeaponMgr = *( DWORD *)( dwCShell + dwWeaponMgr );
for(int i = 0; i <= 3071; i++) //Current Weapon Count 05.01.2019
{
DWORD dwWeapon = *(DWORD*)(pWeaponMgr + (4 * i));
if (dwWeapon)
{
pOldWeapons[i] = new WEAPON;
memcpy( pOldWeapons[i], (void*)( dwWeapon ), sizeof( WEAPON ) );
}
}
}
//to change the call to bypass the client error, use this sig E8 ? ? ? ? 8B F0 83 C4 04 85 F6 0F 84 ? ? ? ? D9 86
bool isbackup = false
void Bypass()
{
if (!isGameReady()) return;
//================Anti Send Error Report===============//
DWORD crossfire = (DWORD)GetModuleHandleA("crossfire.exe");
if (crossfire == NULL) return;
if (!isbackup)
{
DWORD CShell = (DWORD)GetModuleHandleA("CShel.dll"l);
if (CShell != NULL)
{
//================Client 28_4===============//
CreateBackup(CShell, WeaponMgr);
//================Client 28_3===============//
DWORD dwBypassWeaponHack = (DWORD)(CShell + Bypass28_3);
DWORD dwOldProtect;
VirtualProtect((void*)(dwBypassWeaponHack + 0x1), sizeof(DWORD), PAGE_EXECUTE_READWRITE, &dwOldProtect);
*(DWORD*)(dwBypassWeaponHack + 0x1) = (DWORD)GetWeaponByIndex - dwBypassWeaponHack - 5;
VirtualProtect((void*)(dwBypassWeaponHack + 0x1), sizeof(DWORD), dwOldProtect, NULL);
}
}
}
Bypass();