Применение Spices.Obfuscator как инструмента для защиты и оптимизации .net приложений.
Современные практики применения
обфускаторов раширяют их роль в разработке и сопровождении .Net приложений.
Сложившаяся практика применения обфускаторов
как инструментов для защиты приложений от подсматривания и декомпиляции/дизассемблинга
требует от обфускаторов более комплексных решений.
Если раньше считалось что обфускаторы
превращают байт-код и метаданные в нечто бесмысленное и трудно распознаваемое,
то нынешняя ситуация выглядит совсем не так. Практики разработки и
сопровождения кода стали более изощренными, требуется совсем иной уровень
защиты, требуются дополнительные сервисы для поддержки, анализа и сопровождения
кода, крупных проектов и их различных конфигураций/пакетов.
Да – обфускаторы предлагают возможность
превратить байт код и его структуру в трудночитаемый и плохо декомпилируемый
вид, защищая код от хакеров и конкурентов, но это далеко не все.
Хакеры и конкуренты имеют неплохой
инструментарий для декомпиляции, деобфускации, подделки байт-кода и необходимо
противостоять подобного рода уязвимостям.
Современные обфускаторы расширяют сферу
применения до более широкой.
Давайте рассмотрим набор сервисов предлагаемых
Spices.Obfuscator (одного из
продуктов семейства Spices.Net) разработанного
компанией 9Rays.Net, Inc.
Автоматизация build-process
Немало компаний имеют достаточно сложные build-процессы, требующие гибкости и определенных сценариев. Компания Microsoft
предлагает для автоматизации build процесса
свое решение – MSBuild, которое подразумевает
использование своего решения в build-скриптах или
сценариях. Поддержка MSBuild, входящая в состав Spices.Obfuscator позволяет достаточно легко
интегрировать процесс обфускации в build процесс. Кроме
этого Spices.Obfuscator можно
использовать и более гибче – примеры кода, входящие в Spices.Obfuscator доказывают это – вы можете написать
свой сценарий обфускации на C# или Vb.Net
интегрировав Spices.Obfuscator в свои собственные build-решения.
Spices.Project и Spices.Solution
поддерживают запуск различных задач в процессе обфускации, широкий выбор событий в Spices.Project.ObfuscationEvents и Spices.Solution.ObfuscationEvents предоставляют возможность запуска различных задач при каждом шаге обфускации.
Поддержка Debug
Spices.Obfuscator имеет
возможность поддержки отладки приложений после обфускации. Имеющиеся средства,
а именно – глубокая интеграция с Visual Studio 2003/2005
позволяют обфусцировать приложения непосредственно в процессе сборки (build) приложения и запуска обфусцированного приложения в режиме отладки.
Кроме этого Spices.Obfuscator
предлагает средства для трассировки exceptions, позволяющие получить оригинальный стек вызова методов( граф вызова
методов, stack trace), и быстро проанализировать и
справить место ошибки или некорректности.
Поддержка крупных проектов и различных конфигураций проектов
Многие производители софта подготавливают для
выпуска несколько комбинаций сборок - например для evaluation , pro, light версий одного и
того же продукта. Для различных версий им необходимы различные режимы
обфускации. Эту проблему поможет решить использование Spices.Solution. Spices.Solution – это коллекция проектов Spices.Project (каждый из которых содержит одну из конфигураций продукта) позволяющая
обфусцировать различные конфигурации продукта за один раз.
Анонимизация
Это новая, ожидающая патента технология,
включающая в себя несколько средств для усложнения анализа код и декомпиляции.
Средства технологии Spices.Anonymizer фактически превращают монолит кода
защищаемого приложения в песок, значительно усложняя процесс анализа
приложений, поиска уязвимости для взлома, а также защищающих приложения от ILASM/ILDASM roundtrip.
Технология незначительно понижает
производительность кода, гибка для управления и предлагает несколько уровней
защиты, где даже минимальный уровень защиты повышает защищенность приложения и
сложность его анализа в несколько раз.
Безопасность
Не секрет, что немало усилий разработчики
тратят на обспечение безоспасности и секьюрности своих приложений, скрыть от
хакеров секретную информацию и максимально усложнить ее поиск в байткоде.
Spices.Obfuscator предлагает
для защиты свои решения в области шифрования важной информации, содержащейся в
коде.
Технология StringEncryption используемая Spices.Obfuscator, предлагает несколько уровней секретности – от удаления строк из кода
до шифрования их по алгоритму TripleDes. Кроме этого в
технологии Spices.Anonymizer предусмотрена
возможность анонимизировать код, отвечающий за шифрование информации, для того
чтобы программа декомпиляции не смогла опознать методов-дешифраторе.
Оптимизация
Да, обфускаторы занимаются не только
перименовыванием членов сборки(assembly members), но и
оптимизируют сборку по размеру и производительности. Сам эффект обфускации с
переименованием членов сборки к очень коротким именам приводит к повышению
производительности приложений, однако это не все. Сборки могут содержать код и
метаданные, которые нет необходимости держать в обфусцированной сборке, эти данные
излишни и их требуется удалить, тем самым уменьшив размер сборки. Постоянно
совершенствуемая технология Spices.Obfuscator, используемая в Spices.Obfuscator позволяет уменьшить размер метаданных в сборке до 50%. Уменьшение
размера также приводит к более быстрой инициализации сборки, увеличению
производительности, некторые методы используемые Spices.Optimizer
усложняют задачи взлома и исследования сборки, усложняют ILDASM/ILASM roundtrip
Локализация.
Локализация в том привычном виде, которую вы
можете встретить в таких средствах разработки как Visual Studio, не позволяет локализовать абсолютно все строковые ресурсы и ресурсы
приложений, и локализованную информацию необходимо постоянно пересматривать,
пересмотрев процесс разработки приложения с учетом локализации.
Spices.Obfuscator предлагает
более удобное решение данного вопроса. При помощи одного из интсрументов
входящего в семейство продуктов Spices.Net – Spices.Localizer
пользователь может извлечь всю строковую и ресурсную информацию из сборки,
получить таблицы локализации и произвести локализацию необходимой информации на
любой из языков.
Spices.Localizer предлагает
также синхронизацию строк для локализации к текущей версии кода, что
значительно сокращает время разработки и позволяет распределить задачи между
разработчиками более оптимально. После того как таблицы локализации созданы, их
можно использовать прии обфускации и вся локализовання информация будет
внедрена в код, при это если используется шифрование строк (StringEncryption), то локализованная информация будет еще и зашифрована.
Tamper-proof /antiSpoofing
Если первые версии .net не
привлекали хакеров, то обстановке растущей популярности .Net, хакеры обратили внимание на .Net софт. В .Net
используется технология подписания сборок, превращающая файл в strong-named assembly, подобные файлы проверяются при
запуски на подпись, хранящуюся в сборке и подтверждают что с момента подписания
сборки ее содержимое не изменилось. Это хорошее решение, позволяющее избежать
заражения и модификации сборки, но технология подписания имеет свои уязвимости.
Например хакер может «сбросить» подпись в
сборке(assembly), модифицировать сборку и переподписать ее
свои ключом, тем самым подделав сборку – это сейчас один из распространенных
способов взлома .Net кода.
Spices.Obfuscator предлагает
свои решения для защиты кода от подобных методов взлома – генерируя tamper-proof сборки, которые крайне сложно подделать (это
также patent pending технология) и специалисты 9Rays.Net занимаются усовершенствованием этой
технологии.
Верификация сборок
Для того чтобы быть уверенным что сборка
обфусцирована корректно, в Spices.Obfuscator включена также возможность верификации сборок после обфускации и
оптимизации.
Дополнительные средства для анализа и просмотра(browse) и поиска
Выгодно отличающей чертой Spices.Obfuscator является то что этот продукт включает
себя дополнительные средства для анализа, просмотра и верификации сборок. В
пакет включен дизассемблер, анализатор графа вызовов, наследования(inheritance) и имплементации интерфейсов(interface implementation), пользователь при просмотре членов сборке может получать полную
контекстную информацию о текущем члене сборки(assembly member) о существлять поиск как по названию, так и по токену(токен). В пакет
включены также средства для низкоуровневого просмотра и анализа метададанных –
от структуры таблицы метаданных до структуры PE-файла(portable
executable format). В пакет также включены средства для получения
диаграмм, отражающих различные взаимоотношения между сборками и их членами.
Другими словами – Spices.Obfuscator предоставляет
не только средства для защиты, но и служит средством для анализа архитектуры
сборок и поставщиком практически любой информации о сборке.
Манипуляции с классами и сборками (Assembly, classes merging & linking).
В ближайших версиях Spices.Obfuscator компания 9Rays.Net
планирует выпуск Class/Assembly Linker, который повзолит производить манипуляции со сборками – обьединением,
внедрением классов, экстрагированием классов из сборки. Подобные сервисы также
востребованы, и, как видите, расширяют функциональность обфускатора.
Выводы (Conclusion)
Как мы видим, Spices.Obfuscator
предлагает широкий набор сервисов и средств не только для защиты
софта от любопытных, конкурентов и хакеров, но также оптимизирует приложения по
размеру и производительности, может гибко сопровождать даже самый изощренный build-процесс и крупные проекты, и служит поставщиком информации для
просмотра, анализа и верификации .Net приложений.