Файл plist (список свойств) md5sum изменяется при компиляции в приложение iPhone - PullRequest
0 голосов
/ 17 июля 2009

Я включил файл plist в свое приложение для iPhone. Это в двоичном формате (с помощью plutil для преобразования из XML в двоичный файл). Я хочу запустить контрольную сумму MD5 (или SHA-1) на нем во время выполнения, чтобы подтвердить, что ее содержимое соответствует ожидаемому. К сожалению, я всегда получаю контрольную сумму, которая отличается от того, что я изначально включил. После часа предположения, что я неправильно вычислял сумму MD5, я решил запустить тест и подтвердить, что байты действительно совпадают. Это не так. Размер файла остается тем же, но начиная с байта 30 и далее по всему файлу (за исключением последних 32 байтов) содержимое файла полностью отличается. Кто-нибудь знает, подписаны ли файлы списка свойств или иным образом «скомпилированы» в другой двоичный формат перед включением в приложение iPhone? Если да, можете ли вы предоставить более подробную информацию о процессе?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 18 июля 2009

По умолчанию, вместо простого копирования, Xcode использует небольшой скрипт для обработки и копирования файлов plist при создании цели. Если вы откроете информационное окно для своей цели в XCode и выберете вкладку «Правила», вы увидите, что для обработки исходных файлов text.plist он использует свой собственный инструмент под названием CopyPlistFile. Он выполняет некоторую базовую проверку, чтобы убедиться, что plist действителен, и может при желании преобразовать его в другой формат, хотя кажется, что по умолчанию преобразование не выполняется.

Я не знаю, вызывает ли это изменение в вашем plist-файле, но при желании вы можете получить информацию о самом plist-файле в вашем проекте и изменить его тип файла с "text.plist" на just " текст". Это должно заставить XCode обрабатывать его как обычный текстовый файл, а не файл списка свойств, и просто делать прямую копию вместо запуска его через инструмент CopyPlistFile.

0 голосов
/ 17 июля 2009

Я выведу стек «почему» на этот вопрос. Я не знаю ответа на ваш вопрос, но мне любопытно, почему вы тратите на него время.

Поскольку приложения имеют цифровую подпись, почему вы беспокоитесь о целостности PList? Если кто-то изменил его, приложение не установилось бы, потому что цифровая подпись больше не действительна.

Другая причина может заключаться в том, что вас беспокоит взлом приложения. Совершенно разумно, но если кто-то может взломать приложение, то он также может изменить PList и изменить контрольную сумму в вашем коде, чтобы она все еще работала. На самом деле нет способа гарантировать целостность вашего контента без фактического получения его от третьей стороны (например, вашего собственного сервера)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...