const / readonly против таких программ, как Cheat Engine

2

У меня есть программа, и в этой программе есть несколько переменных (имя пользователя и "уровень привилегий" ), которые изменяются только при входе пользователя в систему. Есть ли способ "защитить" эти переменные от редактирования и т.д. Во время работы программы, но программа все еще может их изменить, если пользователь входит в систему с другим именем пользователя.

Я думал, что это будет работать (не проверено), чтобы использовать либо const, либо readonly, но все же можно изменить их, когда пользователь перегружает?

Кроме того, возможно ли использовать хеш/шифровать строки, используемые в программе, чтобы пользователь не смог их найти, выполнив поиск в памяти (т.е. используя Cheat Engine)?

  • 3
    Помните, программы запускаются от имени пользователя . Там нет ничего, что программа может делать , что пользователь работает он не может сделать. Если вы можете написать и запустить программу, которая изменяет переменную, то, очевидно, пользователь может изменить переменную; ваша программа может делать только то, что может делать пользователь, выполняющий ее.
Теги:
memory
const
readonly

3 ответа

6
Лучший ответ

Если учетные данные программного обеспечения и пользователя запущены на компьютере пользователя, невозможно, чтобы пользователь не мог изменять значения.

Если учетные данные и доступ хранятся на удаленном сервере, вы можете использовать этот сервер и хранить только хэшированный токен, который истекает через произвольный период времени. Используйте этот токен в качестве поиска, чтобы получить информацию о профиле пользователя с сервера.

Вы все равно столкнетесь с проблемами, потому что все, что делается на стороне клиента, можно манипулировать/взломать. Если вы сохраните всю свою логику на центральном сервере, вы можете быть более уверенным в том, что все не будет взломано, однако производительность вашей системы будет страдать.

Вам нужно взвесить плюсы и минусы центрального сервера для обеспечения безопасности и производительности и выбрать баланс, который наилучшим образом подходит для вас.

2

Вы не можете изменить переменную const (ever) или readonly (после инициализации), чтобы она не работала.

Лучшим вариантом, вероятно, будет объединение логики, которая создает/инициализирует/устанавливает эти переменные в чистый метод и/или свойство, заданное во время процесса входа в систему. Это будет изолировать этот код, поэтому, по крайней мере, легко следовать.

Что касается шифрования строк, вы можете использовать SecureString для обработки этой цели во время выполнения. Во время компиляции вы можете запутать свой код (многие обфускаторы поддерживают строковое шифрование).

0

Там нет надежного способа, которым вы могли бы. Зашифровав материал, вы можете просто сделать его более трудным, но никогда невозможным. В худшем случае пользователь может подключить отладчик и напрямую изменить память.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню