Grapeoff
@Grapeoff
В чём концепция...?

Как работают ObscuredTypes у Anticheat?

Добрый день!

20 раз говорил уже, что делаю свою игру, и теперь я хочу защитить её от подмены значений в оперативной памяти.

Я видел ролики, где просто сохраняют это значение с офсетом, а при взятии отнимают его, ну либо XOR.

Недавно, я наткнулся на забавный Unity Asset под названием Anticheat Toolkit. И там, чтобы защитить игру от подмены значений, необходимо использовать не стандартные int, float и тд, а их «ObscuredTypes».

И мне стало интересно: как они смогли классу присвоить не конструктор, а сразу целочисленное значение (в примере с ObscuredInt)?

private ObscuredInt gems = 10;

Я вначале подумал, что это перегрузка оператора присваивания, но когда я глянул в MSDN, там было сказано, что перегрузка оператора присваивания невозможна. Собственно, таким образом я и попал сюда: как они это реализовали?
  • Вопрос задан
  • 183 просмотра
Решения вопроса 1
ayazer
@ayazer
Sr. Software Engineer
как-то так

public struct WrappedInt
    {
        private readonly int _value;

        public WrappedInt(int val)
        {
            _value = val;
        }

        public static implicit operator WrappedInt(int val)
        {
            return new WrappedInt(val);
        }

       ... 
    }

....

WrappedInt wrapped = 1;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы