Насколько безопасна информация, содержащаяся в скомпилированном коде приложения 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:" ).