Программное определение того, сломан ли iPhone на джейле

StackOverflow https://stackoverflow.com/questions/1140856

Вопрос

Как определить (программно), является ли iPhone/iPod:

  1. Тюрьма сломана
  2. Запуск взломанной копии вашего программного обеспечения

Пинч Медиа может определить, сломан ли телефон или запущенное программное обеспечение, кто-нибудь знает, как они это делают?Есть ли библиотеки?

Это было полезно?

Решение

Здесь это один из способов определить, было ли ваше приложение взломано.

Суммируя:взлом обычно требует изменения Info.plist.Поскольку у вас есть доступ к обычному файлу, определить такие изменения довольно легко.

Другие советы

Обнаружить взломанный телефон так же просто, как проверить наличие /private/var/lib/apt/ папка.Хотя это не обнаруживает пользователей, использующих только установщик, к настоящему времени большинство из них установили Cydia, Icy или RockYourPhone (все из которых используют apt).

Для обнаружения пиратских пользователей проще всего проверить наличие SignerIdentity введите ключ вашего приложения Info.plist.Поскольку продвинутые взломщики могут легко найти стандартный [[[NSBundle mainBundle] infoDictionary] objectForKey: @"SignerIdentity"] проверок, лучше всего скрыть эти вызовы, используя среду выполнения Objective C, доступную через #import <objc/runtime.h> или используйте альтернативные эквиваленты.

Чтобы расширить ответ Заковыри, вы можете использовать следующий код:

if ([[[NSBundle mainBundle] infoDictionary] objectForKey: @"SignerIdentity"] != nil) {
  // Jailbroken
}

ОДНАКО человек, сделавший джейлбрейк вашего приложения, может отредактировать вашу программу в шестнадцатеричном формате и, таким образом, отредактировать строку @"SignerIdentity", чтобы прочитать @"siNGeridentity" или что-то еще, что вернет ноль и, таким образом, пройдет.

Итак, если вы воспользуетесь этим (или любым другим предложением от http://thwart-ipa-cracks.blogspot.com/2008/11/detection.html):

  • Не ждите, что это будет работать вечно
  • Не используйте эту информацию, чтобы каким-либо образом сломать или затруднить работу вашего приложения (в противном случае у них будет причина отредактировать его в шестнадцатеричном формате, поэтому ваше приложение не узнает, что оно взломано).
  • Вероятно, разумно запутать этот фрагмент кода.Например, вы можете поместить перевернутую строку в кодировке Base64 в свой код, а затем декодировать ее в приложении, выполнив обратный процесс.
  • Подтвердите свою проверку позже в своем коде (например,когда я сказал SignerIdentity, там на самом деле было написано SignerIdentity или siNGeridentity?)
  • Не рассказывайте людям на общедоступных веб-сайтах, таких как stackoverflow, как вы это делаете.
  • Имейте в виду, что это всего лишь руководство, и оно не является надежным (и не защищенным от взлома!) — с большой силой приходит и большая ответственность.

Чтобы расширить комментарии Йонела и Бенджи выше:

1) Метод Лэндона Фуллера полагаясь на проверку шифрования, на которую выше дал ссылку yonel, похоже, единственный, который до сих пор не побежден автоматическими инструментами взлома.Я бы не слишком беспокоился о том, что Apple в ближайшее время изменит состояние заголовка LC_ENCRYPTION_INFO.Похоже, что это действительно оказывает непредсказуемое воздействие на iPhone с джейлбрейком (даже если пользователь приобрел копию...)

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

2) Чтобы дополнить комментарий Бенджи.обфускация (абсолютная необходимость при работе с любыми строковыми значениями в вашем антипиратском коде):аналогичный, но, возможно, даже более простой способ — всегда проверять соленый хешированный версию значения, которое вы ищете.Например (даже несмотря на то, что эта проверка больше не эффективна), вы должны проверить имя ключа каждого MainBundle как md5(keyName + «некоторая секретная соль») по соответствующей константе...Довольно простой, но наверняка помешает любой попытке найти строку.

Конечно, для этого вам потребуется иметь возможность косвенно запрашивать значение, которое вы хотите сравнить (например, просматривая содержащий его массив).Но чаще всего это так.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top