Как зашифровать или обфускать объектный код c?
Возможный дубликат:
Обфускация кода приложения iPhone/iPad - это возможно? Стоит ли это?
Я потратил много времени на это, и я не смог найти идеальный ответ. Вот почему я решил задать свой вопрос здесь. У меня есть приложение для iPhone и вы хотите зашифровать код, чтобы предотвратить использование утилиты class-dump или otool. (Инструменты, используемые для выгрузки заголовков из исполняемого файла). Я хотел бы знать, есть ли способ шифрования исходного кода или обфускации исходного кода?
Ответы
Ответ 1
Это намного сложнее, чем может показаться на первый взгляд. Любой инструмент, который управляет именами методов, может вымываться:
- Соответствие KVC
- Использование динамически сгенерированных селекторов
- Совместимость файлов Nib
- Соответствие протокола
- Наследование методов
Обфускация - это еще один уровень, с которым нужно справиться; часто обфускация легко отменяется. Невозможно "зашифровать" ваши классы, потому что среда Objective-C и Cocoa не будут знать, как ее расшифровать. Любой, кто достаточно определен, в конечном итоге выяснит, как работает ваша программа.
Ответ 2
Фактически вы можете обеспечить некоторую обфускацию и защиту от несанкционированного доступа специализированными сторонними инструментами. Есть две компании, я знаю, которые предоставляют инструменты или услуги для этого: Arxan и irDato.
Ни дешевые, ни доступные для небольших разработчиков, но если вы развиваетесь для крупной корпорации, тогда вы должны их рассмотреть.
Обфускация выполняется путем манипулирования кодами и добавлением избыточных инструкций, чтобы запутать любого, кто пытается перепроектировать код. Защита от взлома осуществляется путем добавления контрольных сумм к коду и встраивания проверочных проверок внутри функций. Вы можете создать сеть взаимозависимых контрольных сумм, из-за которых чрезвычайно сложно обойти их. Есть еще несколько вещей, которые можно сделать, но вам действительно нужно поговорить с специалистами в этой области.
В дополнение к более раннему ответу Apple не шифрует двоичные файлы, а просто подписывает их. Достаточно легко перепроектировать и модифицировать бинарные файлы приложений на джейлбрейк-устройстве.
Ответ 3
По-видимому, в соответствии с этим ответом Apple шифрует бинарные файлы iPhone, как само собой разумеющееся, для всех приложений iPhone.
Я бы не стал беспокоиться об этом.