MonoTouch: как защитить мое приложение - PullRequest
10 голосов
/ 12 марта 2012

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

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

Есть ли простое решение?

1 Ответ

16 голосов
/ 12 марта 2012

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

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

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

ПРИМЕЧАНИЯ

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

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

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

...