class Cweapon_data { public: DWORD class_weapon; DWORD nomer_weapon; DWORD address_weapon; DWORD status; char* name_weapon; BYTE otd_1; BYTE otd_2; BYTE Pricel; DWORD key; BYTE Pricel_decrypt; bool Anti_Otdacha; void MEMwrite(void *adr, void *ptr, int size) { DWORD OldProtection; VirtualProtect(adr,size,PAGE_EXECUTE_READWRITE, &OldProtection); memcpy(adr,ptr,size); VirtualProtect(adr,size,OldProtection, &OldProtection); } void SaveData(BYTE *adr) { otd_1 = (BYTE) *(adr + 3922); otd_2 = (BYTE) *(adr + 3923); Pricel = (BYTE) *(adr + 0x18C0); // 0x18C0 6352 } void SavePricel(DWORD *addr) { key = (DWORD) *(addr + 0x62B); //0x62B Pricel_decrypt = Pricel^key; } void RestoreData() { if(address_weapon > 0) { BYTE *Address = (BYTE * )address_weapon; (BYTE) *(Address + 3922) = otd_1; (BYTE) *(Address + 3923) = otd_2; Anti_Otdacha = false; } } void Change_pricel(int New_pricel_nomer) { DWORD *Address = (DWORD * )address_weapon; (DWORD) *(Address + 0x630) = ((New_pricel_nomer)^key); } void get_addr(void) { address_weapon = некая хитрая функция 8) ; if(address_weapon > 0) { SaveData((BYTE * )address_weapon); SavePricel((DWORD * ) address_weapon); } } void Weapon_patch_full(void) { if(address_weapon > 0) { DWORD addr = (DWORD)address_weapon; MEMwrite((void *)(addr + 3922),(void*)(PBYTE)"\x00\x00", 2); // 0xF4A if(status == 1) MEMwrite((void *)(addr + 3972),(void*)(PBYTE)"\x00", 1); // 0xF7C Anti_Otdacha = true; } } };