Насколько безопасна информация, содержащаяся в скомпилированном коде приложения iPhone?

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

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

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

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

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

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

Ответы

Ответ 1

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

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

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

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

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

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

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

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

Снова: легко сделать, но не очень безопасно.

Ответ 2

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

Ответ 3

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

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

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

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

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