Я знаю о грубом способе сохранения данных программы, сохраняя их в текстовом файле. Проблема в том, что любой пользователь имеет доступ к текстовому файлу и может манипулировать им. Например, я хочу сохранить и загрузить данные игры, которые меняются по мере продвижения игры. Какие существуют методы хранения таких данных и их доступность только в игровой программе, чтобы другие люди не манипулировали ими?Сохранение и загрузка данных C++
ответ
Вы должны хранить данные в двоичных файлах. Но люди все равно могут изменить его в любом случае (например, я часто меняю точку умения или статическую точку своего персонажа в Diablo2: D), поэтому вам следует рассмотреть возможность найти алгоритм вычисления суммы хэша и сохранить его в ваших данных.
Вы можете сохранить данные в двоичном файле. Просто напишите и прочитайте биты от и до объекта C++.
Я уверен, что люди, пытающиеся защитить файл, могут выяснить, как преобразовать двоичный файл; нет? – ChiefTwoPencils
Ну, я не знаю, как будут записываться данные. Если данные, которые он хочет записать, это структура, содержащая 2 ints и 10-символьную строку, я думаю, что файл будет просто sizeof (int) + sizeof (int) + 10 * sizeof (char) байтов. И единственный способ, который имел бы смысл, был бы, если бы он был брошен его объектом. – bathtub
То, что я говорю, похоже на то, что сказал @DzungAh в этом ответе. Сохранение данных в двоичном файле не является отличным решением. Это все равно будет редактироваться ... – ChiefTwoPencils
Идея состоит в том, чтобы форматировать ваши данные таким образом, чтобы люди не читались. Это можно сделать с помощью ряда методов.
- Сохранить данные как двоичный файл. Это делает файл трудным для чтения людьми, поэтому необходимо использовать шестнадцатеричный редактор или аналогичную программу. Это также мешает увидеть, где заканчивается одно значение, а другое начинается (в текстовом файле это отображается пробелом). Другое преимущество в том, что ваши файлы будут намного меньше.
- Шифрование данных. Данные могут быть зашифрованы с использованием различных методов. Это довольно безопасный вариант, однако шифрование может быть медленным, поэтому для очень большого объема данных это может быть не оптимальным в зависимости от того, насколько быстро данные должны быть сохранены/загружены. Также существует проблема хранения ключа шифрования/дешифрования где-нибудь (возможно, в самом файле или в качестве константы в программе).
- Obfuscation. Это широкий термин, который означает затруднение чтения. Например, две строки могут быть чересстрочными, чтобы сделать как нечитаемые. Обфускация часто включает в себя вставку выделения нежелательных данных, информацию, которая не используется программой, и служит только для того, чтобы запутать потенциальных хакеров.
- Проверка действительности. В случае, если кто-то модифицирует файл, и они не знают, что делают, очень вероятно, что они окажут некоторое видимое влияние на программу. Таким образом, они могут просто поиграть с файлом, чтобы увидеть, как реагирует ваша программа. Один из способов противодействия этому - проверить, все ли данные находятся в пределах логического диапазона. Данные также могут храниться несколько раз в файле, запутываются или зашифрованы по-разному. Если данные отличаются, вы знаете, что файл был изменен.
- 1. Сохранение и загрузка общих данных WinPhone8.1 C#
- 2. C# DataSet Загрузка и сохранение XML-данных
- 3. Сохранение и загрузка программных данных, C# WPF
- 4. Сохранение, загрузка и обработка (список) данных C#
- 5. ClassLoader - Загрузка и сохранение данных
- 6. Сохранение и загрузка данных - Unity3D
- 7. Сохранение и загрузка базы данных
- 8. C++, ECS и сохранение/загрузка
- 9. C# [Постоянное сохранение и загрузка]
- 10. Сохранение/загрузка данных?
- 11. Сохранение и загрузка данных в Python 3
- 12. Сохранение и загрузка FlannBasedMatcher
- 13. Сохранение и загрузка данных из холста LocalStorage
- 14. Сохранение и загрузка корзины в базу данных
- 15. сохранение и загрузка данных, когда приложение работает
- 16. Загрузка и сохранение ссылки в базе данных
- 17. Сохранение и загрузка данных игры не работает
- 18. UWP Xbox One: Сохранение и загрузка данных
- 19. Сохранение и загрузка элементов структуры данных
- 20. IntentService JSON загрузка и сохранение данных
- 21. Загрузка изображений и сохранение данных в CakePHP3
- 22. Xerces C++ - загрузка, чтение и сохранение, альтернативы?
- 23. C# - Загрузка и сохранение изображений в папку
- 24. C# WPF Загрузка и сохранение изображений
- 25. Проверка и сохранение/загрузка с MySQL C#
- 26. Сохранение и загрузка массивов - Objective c
- 27. Сохранение и загрузка большого массива в C++
- 28. MySQL - Сохранение и загрузка
- 29. Сохранение и загрузка содержимого ListView
- 30. Сохранение/загрузка данных в Unity
как в случае трещины защита? –
Как редактор уровней в игре. Данные нового уровня сохраняются и могут быть доступны только самой игровой программой. – starhacker