Насколько безопасна информация, содержащаяся в скомпилированном коде приложения iPhone? - PullRequest
13 голосов
/ 13 октября 2010

Я обсуждал это с некоторыми друзьями, и мы начали задаваться вопросом об этом.Может ли кто-нибудь получить доступ к URL-адресам или другим значениям, содержащимся в фактическом коде объектива-c, после того как они приобрели ваше приложение?

Наше первоначальное чувство было отрицательным, но я подумал, что кто-то там имел однозначное знание илидругой?

Я знаю, что файлы .plist легко доступны.

Примерами могут быть такие вещи, как:

-URL значения хранятся в строке

-API ключ и секретные значения

Ответы [ 3 ]

22 голосов
/ 13 октября 2010

Да, строки и информация легко извлекаются из скомпилированных приложений с помощью инструмента strings ( см. Здесь ), и на самом деле даже довольно легко извлечь информацию о классе с помощью class-dump-x ( check) здесь ).

Просто пища для размышлений.

Редактировать: Один простой, хотя и небезопасный, способ скрыть вашу секретную информацию - запутать ее или разрезать на мелкие кусочки.

Следующий код:

NSString *string = @"Hello, World!";

выдаст "Привет, мир!" используя инструмент strings. Написание вашего кода так:

NSString *string = @"H";
string = [stringByAppendingString:@"el"];
string = [stringByAppendingString:@"lo"];
...

покажет набранные символы, но не обязательно по порядку.

Опять же: легко сделать, но не очень безопасно.

12 голосов
/ 13 октября 2010

При покупке приложения оно сохраняется на вашем жестком диске как «FooBar.ipa»; этот файл на самом деле в формате Zip. Вы можете распаковать его и просмотреть содержимое, включая поиск строк в исполняемом файле. Попытайся! Постоянные значения в вашем коде никоим образом не сжимаются, не шифруются и не шифруются.

1 голос
/ 05 июня 2013

Я знаю, что на этот вопрос уже дан ответ, но я тоже хочу высказать свое собственное предложение.

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

Мое другое предложение - «зашифровать» строки простым XOR.Это невероятно быстро и не требует никакой авторизации, если вы продаете приложение через App Store (оно не относится к категориям алгоритмов, которые требуют авторизации для их экспорта).

Вокруг много фрагментовдля выполнения XOR в Какао, см., например: http://iphonedevsdk.com/forum/iphone-sdk-development/11352-doing-an-xor-on-a-string.html

Ключ, который вы используете, может быть любой строкой, будь то бессмысленная последовательность символов / байтов или что-то значимое, чтобы сбить с толку читателей (например, использовать имя методов, например "stringWithContentsOfFile: usedEncoding: error:").

...