Как получить информацию о сертификате приложения с подписью кода для приложения ios

У нас есть приложение для ios Наконец-то мы сделали код, но я хотел бы добавить дополнительную проверку безопасности - внутри самого исполняемого файла.

Я знаю, что Apple подписала приложение. Как получить информацию о подписи Apple в моем приложении? Например, открытый ключ Apple или что-то еще?


person user1773004    schedule 30.10.2012    source источник
comment
Я предполагаю, что это для обнаружения пиратства? Или у вас есть строгие требования к безопасности, которым должно соответствовать ваше приложение для iOS? Вы должны знать, что iOS — очень динамичная платформа, и вы мало что можете сделать для обеспечения такого высокого уровня безопасности, не имея собственного кода, работающего на уровне ядра, отслеживающего системные вызовы и выполняющего инструментирование.   -  person yfrancis    schedule 31.10.2012


Ответы (1)


Вы не должны пытаться делать предположения о Apple Fairplay DRM, предполагая, что вы собираетесь проверить его, у вас нет возможности сделать это, не имея ключей Apple, но есть другие индикаторы подделки / пиратства, которые, как я полагаю, вы ищете .

Есть несколько способов проверить, не было ли подделано ваше приложение. Предположим, что Apple Fairplay DRM безопасна, тогда, если вы обнаружите, что ваше приложение работает в незашифрованном виде, весьма вероятно, что оно было подделано и, что более вероятно, было пиратским. Вы можете проверить бит cryptid в сегменте LC_ENCRYPTION_INFO (подробнее об этом здесь). Но имейте в виду, что пиратские инструменты в настоящее время намного сложнее, и многие из них исправляют значение cryptid во время выполнения. Вероятно, вы могли бы использовать dyld_* API для проверки загруженных библиотек, и если cryptid хакер загружается, ваше приложение, вероятно, скомпрометировано. Конечно, они могут изменить название библиотеки, и вы вернетесь к исходной точке. Они всегда могут изменить значение бита cryptid на диске во время работы приложения и переключить его обратно, когда приложение завершает работу.

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

person yfrancis    schedule 31.10.2012
comment
да, я хочу проверить, было ли мое приложение изменено с помощью информации о сертификате. Когда мое приложение запускается, я могу проверить информацию о сертификате и отобразить напоминание пользователю; - person user1773004; 31.10.2012
comment
под сертификатом, я думаю, вы просто имеете в виду, что он подписан и зашифрован, и в этом случае проверка cryptid будет работать. Но, как я уже сказал, даже это не гарантирует, что внутри вашего процесса не выполняется никакой другой код, из-за таких вещей, как динамическая интерпозиция кода через DYLD_INSERT_LIBRARIES. Это одна из тех вещей, которые, вероятно, лучше оставить в покое, если только вы не хотите участвовать в игре в кошки-мышки с пиратами. - person yfrancis; 31.10.2012
comment
Насколько я знаю, мой код был подписан с моим закрытым ключом перед отправкой в ​​магазин Apple, и Apple зашифровала приложение с помощью информации о пользователе, когда пользователь его загружает. Я просто хочу защитить приложение, загружаемое из другого магазина приложений. - person user1773004; 31.10.2012
comment
В приложении для Android я могу получить свой открытый ключ, когда приложение будет подписано. в mac os также получите информацию о сертификате с помощью кода или команды, такой как codesign -dvvv **app - person user1773004; 31.10.2012