Небольшой гайд о том как провести мутацию кода в чите, а точнее чтобы шансы на его детект были малейшие. Для того чтобы всё сделать правильно, вам необходимо вызвать crypt1(), и он мутирует код от одной _asm вставки до другой, в данном чите который будете использовать, можно будет сделать несколько в разных местах, при этом шанс будет намного ниже.
Код
DWORD func_start1;
DWORD func_end1;
void to_be_crypted1()
{
_asm // получаем адрес начала функции
{
CALL next1
next1 : pop func_start1
}
int a[123], b[321], c[322];// здесь начинаем писать какую нибудь х*йню (чем больше тем лучше, тем больше зашифруется)
for (int i = 0; i < 123; i++)
{
if (i % 2 == 0)
{
a [i]= i - 1;
b [i]= a [i]* 123;
c [i]= 321;
}
else
{
a [i]= i + 1;
b [i]= 123;
c [i]= a [i]* 321;
}
}
for (int i = 0; i<2; i++)
{
a[12] = b[12];
a[11] = b[12];
a[10] = b[12];
a[9] = b[12];
a[8] = b[12];
}
int y = 0;
while (y < 12)
{
a [y]= a[y + 1];
y++;
}
y = 1;
while (y < 24)
{
a[y - 1] = a[y + 1];
y++;
}
y = 2;// здесь заканчиваем писать какую нибудь х*йню
_asm // получаем адрес конца функции
{
CALL next2
next2 : pop func_end1
}
}
void crypt1()
{
to_be_crypted1();// вызываем чтобы узнать адреса
DWORD FuncSize = func_end1 - func_start1, OldProtect, Ignore;
DWORD StartAddr = func_start1;
DWORD xd = func_start1;
VirtualProtect((LPVOID)StartAddr, FuncSize, PAGE_EXECUTE_READWRITE, &OldProtect);//разрешаем запись в эту область памяти
for (int i = 0; i < FuncSize; i++)
{
xd[(char*)0] = rand() % 12345;
xd++;
}
VirtualProtect((LPVOID)StartAddr, FuncSize, OldProtect, &Ignore); // запрещаем запись в эту область памяти
cout « func_start1 « "func start\n";// debug
cout « func_end1 « "func end\n"; // debug
}