#define HackDetect1 0x00435FA6
BYTE HD1[] = {0xEB, 0x35};
#define HackDetect2 0x0043CE36
BYTE HD2[] = {0xEB, 0x35};
#define HackDetect3 0x0043DCF0
BYTE HD3[] = {0xEB, 0x35};
#define HackDetect4 0x0043DCD1
BYTE HD4[] = {0xEB, 0x1F};
#define HackDetect5 0x0043DCE9
BYTE HD5[] = {0xEB, 0x07};
#define IsDebuggerPresent 0x00499517
BYTE IDP[] = {0x90};
#define ZCheckHackProcess1 0x00441E35
BYTE ZCHP1[] = {0xEB, 0x34};
#define ZCheckHackProcess2 0x00441E62
BYTE ZCHP2[] = {0xEB, 0x2C};
#define ZCheckHackProcess3 0x00441EBD
BYTE ZCHP3[] = {0xEB, 0x09};
#define AbnormalBehavior 0x00440353
BYTE AB[] = {0xE9, 0x8A, 0x00, 0x00, 0x00};
//Write To Memory
DWORD OldProtection;
void WriteToMemory(DWORD Offset, DWORD Pointer, DWORD Length){
VirtualProtect((void *)Offset, Length, PAGE_EXECUTE_READWRITE, &OldProtection);
RtlMoveMemory((void *)Offset, (const void*)Pointer, Length);
VirtualProtect((void *)Offset, Length, OldProtection, &OldProtection);
}
void ModifyMemory( BYTE *Offset, BYTE *ByteArray, DWORD Length){
for(DWORD i = 0; i < Length; i++)
WriteToMemory((DWORD)Offset + i, (DWORD)ByteArray + i, 1);
}
void Bypass()
{
ModifyMemory((BYTE*)HackDetect1, HD1, 2);
ModifyMemory((BYTE*)HackDetect2, HD2, 2);
ModifyMemory((BYTE*)HackDetect3, HD3, 2);
ModifyMemory((BYTE*)HackDetect4, HD4, 2);
ModifyMemory((BYTE*)HackDetect5, HD5, 2);
ModifyMemory((BYTE*)IsDebuggerPresent, IDP, 1);
ModifyMemory((BYTE*)ZCheckHackProcess1, ZCHP1, 2);
ModifyMemory((BYTE*)ZCheckHackProcess2, ZCHP2, 2);
ModifyMemory((BYTE*)ZCheckHackProcess3, ZCHP3, 2);
ModifyMemory((BYTE*)AbnormalBehavior, AB, 5);
}