Сокращение пиратства приложений iPhone

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

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

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

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

Ответ 1

UPDATE

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

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

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

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

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

  • Изменить файл Info.plist
  • Декодировать Info.plist из двоичного кода UTF-8 или ASCII
  • Добавить пару ключей в Info.plist {SignerIdentity, Подписание приложения Apple iPhone OS

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

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

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

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

Ответ 2

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

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

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

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

Ответ 3

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

Ответ 4

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

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

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