Чтобы расширить комментарии Йонеля и Бенджи выше:
1) Метод Лэндона Фуллера, основанный на проверке шифрования, связанный выше yonel, кажется, единственный, который до сих пор не побежден автоматизированными инструментами взлома. Я бы не стал слишком беспокоиться о том, что Apple изменит состояние заголовка LC_ENCRYPTION_INFO в ближайшее время. Похоже, что это оказывает непредсказуемое влияние на взломанные айфоны (даже когда пользователь купил копию ...)
В любом случае, я бы не стал предпринимать никаких опрометчивых действий против пользователя на основе этого кода ...
2) В дополнение к комментарию Бенджи re. запутывания (абсолютная необходимость при решении любых строковых значений в борьбе с пиратством коды): подобная , но , возможно , еще более простым способом, чтобы всегда проверять подсоленную хешированную версию значения вы ищете. Например (даже если эта проверка больше не эффективна), вы должны проверять имя каждого ключа MainBundle как md5 (keyName + "некоторая секретная соль") с соответствующей константой ... Скорее базовый, но обязательно отразите любую попытку найти строка.
Конечно, это требует, чтобы вы могли косвенно запрашивать значение, которое вы хотите сравнить (например, просматривая массив, содержащий его). Но так бывает чаще всего.