❓ Bypass 28_4
Boa tarde galera, realizei o procedimento para tirar o bypass 28_3 fazendo um -> jmp como alguns tutoriais aqui na MPGH.
E consegui obter sucesso
Mas como nem tudo são flores, agora está retornando 28_4, que presumo eu ser um backuk da função 28_3 em outra binary string
Segue o código, MakeCall.h:
Função em .cpp:
Obrigado desde já gafanhotos! 
E consegui obter sucesso

Mas como nem tudo são flores, agora está retornando 28_4, que presumo eu ser um backuk da função 28_3 em outra binary string

Segue o código, MakeCall.h:
Code:
bool isReady = false;
typedef struct
{
BYTE Data[0x3000];
} WeaponMgrCopy;
WeaponMgrCopy* Weapons[800];
void backup(DWORD CShell, DWORD WeaponMgr)
{
DWORD pWeaponMgr = *(DWORD*)(CShell + WeaponMgr);
for (int i = 0; i <= 800; i++)
{
DWORD Weapon = (*(DWORD*)(pWeaponMgr + (4 * i)));
if (Weapon != NULL)
{
Weapons[i] = new WeaponMgrCopy;
memcpy(Weapons[i], (void*)(Weapon), 0x3000);//Sugestão por: @dreek1
}
}
}
WeaponMgrCopy* bypass(int GunIndexNR)
{
return Weapons[GunIndexNR];
}
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;
}
Code:
DWORD bypass = DWORD(CShell + 0x005BD6EA + 0x17);
if (bypass != NULL)
{
memcpy((void*)(bypass), "\xE9\xE3\x01\x00\x00\x90", 6);
}



