Як захистити гру від artmoney

Одного разу, я теж задався питанням, як захистити дані гри від злому Artmoney. Зазвичай захист зводитися до того, що гра відмовляється запускатися при запущеному Artmoney, це рішення здалася мені не дуже витонченим. Я вирішив знайти свій спосіб.

Як експериментального майданчика використовував змійку (гра самописна, класична, ісходников Не буду приводити, тому що загубилися, буду приводити тільки код відповідають за захист від Artmoney), де гравця могло цікавити тільки кількість життів змійки.

Першим було випробувано xor шифрування значення змінної, але воно впало при використанні параметрів пошуку «Невідоме Значення» і «Кодоване Значення». Тобто простого шифрування явно недостатньо. Тоді мене осінило, що потрібно міняти ключ шифрування постійно, незалежно змінилося значення змінної чи ні.

Замість однієї змінної


заводимо дві змінні

при цьому реальне значення змінної життя одно life xor key (можна використовувати будь-який інший алгоритм шифрування).
Щоб відсів не працював потрібно постійно міняти ключ шифрування і перешіфровивать змінну (наприклад, поставити таймер, який через кожні 100 млсекунд змінює ключ)

Зміна значення відбувається майже за тим же алгоритмом.


Дана методика захисту може бути реалізована на будь-яких мовах програмування. Головне дотримуватися принципу: постійно міняти ключ шифрування.
Upd: трохи пізніше викладу демку, якщо є сумніви.

По-моєму це навіть тим же Artmoney легко зловити, тут же просто змінюватися буде при зміні життів не один байт, а два. Просто в явному вигляді не вималюється в програмі, але прикинути, підрахувати і зрозуміти що тут відбувається в такому тривіальний виконанні взагалі не проблема, имхо.

Чи не найкраще рішення для великої гри. Куди практичніше зробити обортку- свій int, float, double string і т.д ...
А якщо потрібно якомога швидше і для пари змінних, то я б оригінальні значення помножив на 1000, а в гуї виводив life / 1000