Снижение пиратства приложений для iPhone

Каковы принятые методы по снижению пиратства приложений iPhone, которые не нарушают процесс оценки Apple?

Если мое приложение "звонит домой", чтобы предоставить уникальный идентификатор устройства, на котором оно работает, какую другую информацию мне нужно будет собрать (например, идентификатор Apple ID, использованный для покупки приложения), чтобы создать действительный регистрационный токен, который разрешает использование приложения? Кроме того, какой код я бы использовал для доступа к этим дополнительным данным?

Каковы, по-видимому, наилучшие доступные технические подходы к этой проблеме в настоящее время?

(Пожалуйста, воздержитесь от ответов, не связанных с программированием, о том, как пиратство неизбежно и т. Д. Я знаю, что пиратство неизбежно. Мне интересны ответы на основе программирования, в которых обсуждается, как его уменьшить. Заранее спасибо за понимание.)

4 ответа

Решение

ОБНОВИТЬ

Пожалуйста, посетите и прочитайте

Спасибо chpwn в комментариях.

Код слишком старый! - 11 мая 2009 г.

На данный момент есть более простой способ определить, было ли ваше iPhone-приложение взломано для пиратского использования. Это не означает, что вы проверяете уникальные идентификаторы iPhone по списку принятых идентификаторов.

В настоящее время взломщики делают три вещи:

  1. Отредактируйте файл Info.plist
  2. Расшифруйте Info.plist из двоичного файла в UTF-8 или ASCII
  3. Добавить пару ключей в Info.plist{SignerIdentity, Подписание приложения для Apple iPhone OS}

Последний проще всего проверить с помощью этого кода:

NSBundle *bundle = [NSBundle mainBundle]; 
NSDictionary *info = [bundle infoDictionary]; 
if ([info objectForKey: @"SignerIdentity"] != nil) 
{ /* do something */  }

Как правило, у нас нет SignerIdentity ни в одном из приложений App Store, которые мы создаем, поэтому проверка на ноль, а затем выполнение заданных инструкций должна усложнить взломщикам и пиратам.

Я не могу взять кредит на себя, поэтому, пожалуйста, посетите Как сорвать iPhone IPA Crackers. Там много информации о пиратстве на iPhone и о том, как его обуздать.

Как отметил Андрей Таранцов в комментариях, найти строку "SignerIdentity" в двоичном файле (с помощью приложения, такого как HexEdit) и заменить ее довольно легко.

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

Вместо этого я бы предпочел проверить размер info.plist и сравнить его со справочным значением. Я заметил, что сборки Simulator и Devices не имеют одинаковый размер файла info.plist. То же самое касается сборок Debug, Release и Distribution. Поэтому убедитесь, что вы установили эталонное значение, используя размер файла info.plist для сборки Device Distribution Build.

Как посмотреть размер файла при запуске:

Похоже, что сохранение контрольной суммы MD5 Plist и проверка CryptID должны преуспеть до некоторого времени.

Проверьте iTunesMetadata.plist для даты покупки, как иногда, когда приложение взломано, эта дата изменяется на что-то возмутительное.

Также проверьте, существует ли поле имени покупателя. По моему опыту с взломом приложений для личного использования, это обычно удаляется. Если кто-то знает, как работает антидамповая защита Temple Run, вы можете использовать ее в сочетании с защитой, которую poedCrackMod не может получить (google poedCrackMod создайте учетную запись hackulo.us, перейдите в центр разработки, найдите poedCrackMod, установите ее на iDevice),

Сцепление, которое не будет взламывать вещи с помощью Temple Run, как защита, имеет функцию OverDrive, предназначенную для отключения обнаружения трещин в приложении. У poedCrackMod есть LamestPatch, что не так хорошо. Также poedCrackMod - это bash-скрипт с открытым исходным кодом, который может быть переработан. Напомним, что у вас есть приложение с защитой от копирования, которое нельзя обойти с помощью сцепления / перегрузки, но которое можно взломать с помощью poedCrackMod. Однако poedCrackMod не может обойти приложения в проверках пиратства приложений. Трудно вручную исправить проверки целостности в исполняемом файле приложения. Так что ваше приложение сложно взломать.

Другие вопросы по тегам