MonoTouch: как защитить мое приложение

Я использовал Dotfuscator для защиты своего приложения от обратной инженерии. Я зашифровал файлы dll в приложении Windows, но как это сделать в OSX/MonoTouch?

Извлеките dll из ipa, затем путайте dll в windows и переупакуйте зашифрованные dll в IPA, а затем опубликуйте его в appstore?

Есть ли какое-нибудь простое решение?

Ответ 1

Прежде всего вам нужно помнить, что iOS не позволяет компилировать JIT (как раз вовремя). Это означает, что все должно пройти через компилятор AOT (раньше).

Это приводит к тому, что все IL-коды из ваших сборок преобразуются в инструкции с инструкциями и в соответствии с инструкциями на основе ARM (v6, v7 и/или thumb), что IL не требуется больше.

Это означает, что, когда вы создаете для Release|iPhone, код IL будет удален из ваших сборок. Так как он удаляется, он не будет присутствовать (быть декомпилированным) в опубликованном вами приложении.

ПРИМЕЧАНИЯ

  • сборки все равно будут находиться внутри приложения , потому что метаданные по-прежнему необходимы (например, System.Reflection нуждается в нем). Таким образом, имена символов и файлы ресурсов не будут искажены/зашифрованы, как обычно, обфускаторы;

  • Вы можете разобрать сборку ARM (это было бы правдой, даже если вы обфускали сборку перед компиляцией AOT), но она намного сложнее понять (и вернуться на С#), чем IL.

  • Извлечение сборок из IPA и их обработка сломают как минимум подпись приложения (вы можете переписать ее). Он также будет вероятным сломать много других вещей (так как код будет ссылаться на имена/структуры, которые могут быть изменены). Я не думаю, что это сработает (но это зависит от параметров, которые вы использовали бы от вашего обфускатора).