Прежде всего, вы должны помнить, что iOS не позволяет JIT (как раз вовремя) компиляции.Это означает, что все должно проходить через AOT (заранее).
Это приводит к тому, что весь код IL из ваших сборок преобразуется в собственный ARM (v6, v7 и /или большой палец) инструкции и о том, что IL больше не требуется .
Это означает, что при сборке для Release|iPhone
код IL будет удален из ваших сборок.Поскольку он удален, он не будет присутствовать (подлежит декомпиляции) в публикуемом приложении.
ПРИМЕЧАНИЯ
сборокбудет по-прежнему находиться внутри приложения , поскольку метаданные по-прежнему требуются (например, System.Reflection
нуждается в них).Таким образом, имена символов и файлы ресурсов не будут искажены / зашифрованы, как это обычно делают обфускаторы;
Вы можете разобрать сборку ARM (это будет верно, даже если вы запутываете сборки перед сборкой AOT) но это намного труднее понять (и вернуться к C #), чем IL.
Извлечение сборок из IPA и их обработка сломают не менее подпись приложения (вы можете переподписать ее).Это также вероятно сломает много других вещей (так как код будет ссылаться на имена / структуры, которые могли измениться).Я не думаю, что это будет работать (но это зависит от опций, которые вы бы использовали от своего обфускатора).