Как извлечь значение NSString из исполняемого файла

Я шифрую данные для приложения для iPhone, используя библиотеки CommonCrypto. Данные являются локальными для приложения. Ключ шифрования жестко запрограммирован в коде с помощью NSString.

Интересно, есть ли способ получить доступ к значению этого NSString из исполняемого файла приложения. Я знаю, что код будет в исполняемой форме, но в конце NSString должен хранить это значение в виде обычного текста где-то в приложении. Доступ к папке приложения, например, с помощью iExplorer, даст полный доступ к исполняемому файлу.


person zago    schedule 14.08.2014    source источник
comment
Во-первых, жесткое кодирование ключа шифрования является плохой практикой, и его следует избегать, если это вообще возможно. Если вы хотите, чтобы программа командной строки strings нашла печатные строки в объекте или другом двоичном файле   -  person carloabelli    schedule 15.08.2014
comment
@cabellicar123 я пробовал со строками в исполняемом файле и ничего не нашел. Вот почему я задавался вопросом, есть ли другой способ сделать это.   -  person zago    schedule 15.08.2014
comment
Вообще говоря, да. Если он хранится как литерал строки символов, то этот литерал может быть извлечен кем-то с помощью подходящих инструментов. (По крайней мере, вы можете запутать ситуацию, сохранив пароль в нескольких частях, объединенных в методе с именем metricBsaFormula.)   -  person Hot Licks    schedule 15.08.2014
comment
Сделайте это на сборке симулятора. Сборка устройства подписана и зашифрована. Конечно, хакеры могут легко отменить подпись/расшифровать ваш двоичный файл.   -  person rmaddy    schedule 15.08.2014
comment
Если это банковское приложение, не могли бы вы сказать мне название и когда оно будет выпущено? ;)   -  person quellish    schedule 15.08.2014
comment
Если вы хотите, вы можете получить более легкий доступ (не обязательно использовать iExplorer), заглянув в папку Products в Xcode, щелкнув правой кнопкой мыши и выбрав «Показать в Finder» в пакете .app.   -  person carloabelli    schedule 15.08.2014


Ответы (1)


Предполагая, что приложение было загружено из магазина приложений на устройство...

  1. Расшифровать бинарник. Для этого требуется устройство с джейлбрейком, но это тривиально (для этого есть много-много инструментов и руководств на intarwebs).
  2. Переместите расшифрованный двоичный файл на рабочий стол.
  3. Запустите любые инструменты, которые вы хотите на нем. strings и т. д. все будет работать. IDA Pro или Hopper разберет двоичный файл и покажет не только строки C в двоичном файле, но и код, который к нему обращается.
  4. На данный момент у вас есть ключ шифрования, от которого зависят ВСЕ пользователи этого приложения.
  5. ...
  6. Выгода!

Извлечение строк C из двоичного файла — одна из первых вещей, которые сделает любой злоумышленник. Не рекомендуется хранить в двоичном файле конфиденциальную информацию, например ключи шифрования. К сожалению, существует не так много безопасных способов передать клиенту ключ шифрования. Оцените риски различных подходов и решите, какой уровень воздействия вам удобен.

person quellish    schedule 14.08.2014
comment
Спасибо. Приложение представляет собой игру с вопросами. Ничего секретного, но я не хочу, чтобы ответы загружались куда-то, чтобы их можно было использовать для обмана игры. У меня нет ресурсов для запуска сервера, чтобы пользователи могли загружать ключ через безопасное соединение. Я попробую инструменты, которые вы упомянули, спасибо. - person zago; 15.08.2014