2009-05-10 3 views
62

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

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

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

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

+36

Мне нравятся вопросы, которые заранее определяют, какой ответ они хотят услышать. Вот как вы получите лучшие ответы. ;) – jalf

+2

Просто пытаюсь отрезать философские сугробы с самого начала. Технические ответы, очевидно, предпочтительны. –

+0

@Alex проще избежать «вы не можете этого», если вы не используете терминологию как «поражение», а не «смягчаете» –

ответ

48

UPDATE

Пожалуйста visit and read

Благодаря 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, которые мы создаем, поэтому проверяем нуль, тогда выполнение инструкций по настройке должно усложнить работу с взломщиками и пиратами.

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

+0

Спасибо, что ответили на вопрос, который я задал. –

+3

@David Быстрый вопрос, на который никто не может ответить: Если это такое легкое (возможно 5-строчное) исправление, почему оно не было реализовано чаще? Есть ли недостаток, о котором вы знаете? Большинство приложений VAST в магазине приложений были взломаны и доступны для загрузки. – mmc

+7

Очень просто для взломщика проверить литеральную строку SignerIdentity или для вызова селектора infoDictionary. Вероятно, вы захотите затмить их. Часть «сделать что-то» тоже сложна: вы не можете сразу же свалить ее, так как это будет тревожить взломщика.Поэтому вам нужно провалиться с большой задержкой (возможно, дать им 30-дневную пробную версию, а затем попросить купить законную копию). Понимаете, сделать это полезно уже не так просто. –

5

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

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

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

Как искать filesize at launch:

-1

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

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

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

0

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

Смежные вопросы