Как я могу предотвратить изменение моих настроек (файлов, NSUserdefaults) внешним приложением, таким как iExplorer

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

Я могу удалить и изменить содержимое в Player UserDefault с помощью iExplorer. Так что мое приложение не функционирует должным образом. Есть ли способ ограничить файлы приложений, которые изменяются внешними приложениями (iExplorer)?

2
nl ja de

2 ответы

Если вы изменяете системные файлы с помощью iExplorer, вы можете заставить любое приложение работать неправильно. Один из способов сделать это несколько доказательством несанкционированного доступа (хотя и не столь эффективным), заключается в управлении информацией на сервере, а не в локальном файле. Например, ваше приложение может выполнить вызов веб-службы для извлечения и сохранения настроек. Это не значит, что они не могут повлиять на ваш пакет приложений, что делает его бесполезным.

Вкратце, вы не можете сделать свое приложение полностью доказательством несанкционированного доступа

<Сильный> Edit

Как предложил Заф, вы можете использовать брелок. Просто сохраните [[NSBundle mainBundle] bundlePath] как ключ в цепочке ключей. bundlePath уникален для каждой установки. Итак, когда ваше приложение загружается, проверьте bundlePath в цепочке ключей, если он не существует, то это новая установка/первая загрузка. После загрузки приложения сохраните bundlePath в цепочке ключей.

3
добавлено

Создайте хэш значений элементов, которые вы хотите защитить, зашифруйте этот хеш и сохраните его в NSUserDefaults . Когда NSUserDefaults считываются дешифрование хеша, повторно вычислите хэш полей и проверьте соответствие хэшей.

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

1
добавлено
Если это небольшой объем данных, скажем, одно значение, сохраните его в цепочке ключей.
добавлено автор zaph, источник
@selva Добавьте проверку удаления/повторной установки. Один из способов - создать файл в папке с документами, если он отсутствует, создать его и сбросить значение keychain. При необходимости вы можете использовать значение в keychain для проверки файла.
добавлено автор zaph, источник
И если хеши не совпадают, приложение не будет работать должным образом - назад, где мы начали. Шифрование может быть хорошей идеей, но все равно можно изменить, чтобы приложение не работало должным образом.
добавлено автор Jeremy, источник
Замечательный @ Zaph!
добавлено автор Jeremy, источник
добавлено автор Jeremy, источник
Я тоже это пробовал. Он ведет себя как новая установка, если я удаляю поле из plist.
добавлено автор user123456789, источник
Keychain сохранит значение, даже приложение будет удалено ( stackoverflow.com/questions/3671499/… ). Если я не удалю и не заново установлю приложение, он не сможет проверить новую установку.
добавлено автор user123456789, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.