Задать вопрос
Grapeoff
@Grapeoff
В чём концепция...?

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

Добрый день!

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

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

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

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

private ObscuredInt gems = 10;

Я вначале подумал, что это перегрузка оператора присваивания, но когда я глянул в MSDN, там было сказано, что перегрузка оператора присваивания невозможна. Собственно, таким образом я и попал сюда: как они это реализовали?
  • Вопрос задан
  • 229 просмотров
Подписаться 2 Средний Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Software-testing.ru
    Программирование на C# для тестировщиков
    10 недель
    Далее
Решения вопроса 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;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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