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

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

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

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

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


person Alex Reynolds    schedule 10.05.2009    source источник
comment
Я люблю вопросы, в которых заранее указано, какой ответ они хотят услышать. Вот как вы получите лучшие ответы. ;)   -  person jalf    schedule 11.05.2009
comment
Просто пытаюсь с самого начала срезать философские рельсы. Очевидно, что технические ответы предпочтительнее.   -  person Alex Reynolds    schedule 11.05.2009
comment
@Alex легче избежать, ты не сможешь ответить, если не используешь терминологию вроде поражения вместо смягчения   -  person Rex M    schedule 11.05.2009
comment
Это неблагодарное прочтение, но я изменил это слово, чтобы сделать его абсолютно ясным.   -  person Alex Reynolds    schedule 11.05.2009
comment
Я почти уверен, что Apple не предоставляет Apple ID людей, купивших ваше приложение. Я не думаю, что кроме страны покупки они вообще предоставляют какую-либо личную информацию. Другими словами, даже если вы позвонили домой, я не совсем уверен, на что вы бы ссылались.   -  person mmc    schedule 11.05.2009
comment
Лучший способ снизить уровень пиратства вашего приложения - продать его в App Store. Период.   -  person Joe Ricioppo    schedule 11.05.2009
comment
Если у вас есть технический ответ, попробуйте нажать на поле ответа ниже. Спасибо.   -  person Alex Reynolds    schedule 11.05.2009
comment
Это читается как вопрос, который не сводится к нулю, Алекс. Вы спрашиваете, что вам нужно собрать, чтобы токен стал действительным. Не зная, что вы подразумеваете под необходимостью и достоверностью, ответы, вероятно, будут ориентированы на философские вопросы, иначе вам ничего не понадобится. Имейте в виду, что вы спрашиваете публику, как ее перехитрить.   -  person Drew Dormann    schedule 11.05.2009
comment
Видеть? На вопрос можно ответить без лукавства и философствования! Возможно, некоторым из вас стоит попробовать это.   -  person Alex Reynolds    schedule 11.05.2009
comment
Мне действительно не нравится, как вы пишете свои комментарии - почему так агрессивно требовательны?   -  person Till    schedule 17.04.2010
comment
@jalf: Каждый вопрос в той или иной степени указывает на то, что спрашивающий хочет услышать. Если бы этого не произошло, это не было бы вопросом. Просьба не получать ответы, не связанные с программированием, понятна, учитывая возможность того, что эта ветка может оказаться не по теме   -  person Casebash    schedule 13.07.2010


Ответы (4)


ОБНОВИТЬ

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

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

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

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

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

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

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

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

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

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

person David Wong    schedule 11.05.2009
comment
Спасибо, что ответили на вопрос, который я задал. - person Alex Reynolds; 11.05.2009
comment
@David Быстрый вопрос, на который ни у кого не может быть ответа: если это такое простое (возможно, 5-строчное) исправление, почему оно не применялось чаще? Есть ли обратная сторона, о которой вы знаете? Большинство приложений VAST в магазине приложений взломаны и доступны для загрузки. - person mmc; 11.05.2009
comment
Взломщику очень легко проверить литеральную строку SignerIdentity или вызов селектора infoDictionary. Вероятно, вы захотите скрыть их. Часть «сделать что-нибудь» также сложна: вы не можете сразу потерпеть неудачу, так как это встревожит взломщика. Поэтому вам нужно потерпеть неудачу с большой задержкой (возможно, дать им 30-дневную пробную версию, а затем попросить купить законную копию). Видите ли, сделать это полезным уже не так просто. - person Andrey Tarantsov; 12.05.2009
comment
P.S. И обязательно посетите ссылку в ответе, это здорово. - person Andrey Tarantsov; 12.05.2009
comment
Да, это очень простое решение серьезной проблемы, в нем есть свои недостатки. SignerIdentity используется, чтобы позволить iTunes установить незаконную копию на взломанный + вещи, которые я не обязан говорить на iPod / iPhone. Для пиратов есть способ обойти это, снова заменив файл info.plist, когда приложение находится на устройстве, на приложение, не имеющее SignerIdentity KV. Если вы хотите, чтобы ваши проверки были более строгими, вы можете перебрать все значения infoDictionary и проверить их строки. Помните: пока людям нужны бесплатные вещи, ваше приложение всегда можно взломать. - person David Wong; 12.05.2009
comment
Я нашел взломанные версии своего приложения с файлом Info.plist, идентичным тому, который я отправил в магазин. Эта проверка больше не работает. - person Rhythmic Fistman; 28.11.2009
comment
ЭТО НЕ ПРАВИЛЬНО! ДЛЯ ПИРАЦИИ ПРИЛОЖЕНИЯ БОЛЬШЕ НЕ ТРЕБУЕТСЯ! Вместо этого проверьте Crypt ID двоичного файла. Этот ключ больше не нужен и больше не включен, и это ужасный способ проверки. - person Grant Paul; 17.04.2010
comment
Вы проверили дату, когда это было отправлено? Тогда это сработало. Не нужно завязывать узелки. ;) - person David Wong; 17.04.2010
comment
@chpwn - Если у вас есть лучший способ проверки, напишите еще один ответ, чтобы мы проголосовали за него. Жалобы на существующий ответ не помогут, если у нас нет альтернативы. - person Brad Larson; 12.11.2010
comment
@ Брэд Ларсон: landonf.bikemonkey.org/code/iphone/ - person Grant Paul; 12.11.2010

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

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

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

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

person samvermette    schedule 25.05.2009

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

person Prashant Rane    schedule 16.07.2012

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

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

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

person Anders Odhner    schedule 27.06.2012