Снижение пиратства приложений для iPhone - PullRequest
62 голосов
/ 11 мая 2009

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

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

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

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

Ответы [ 4 ]

48 голосов
/ 11 мая 2009

UPDATE

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

Спасибо 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. Там много информации о пиратстве на iPhone и как его обуздать.

5 голосов
/ 25 мая 2009

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

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

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

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

0 голосов
/ 16 июля 2012

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

0 голосов
/ 27 июня 2012

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

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

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

...