Ускорение процесса запутывания
Итак, у меня есть умеренно-значительно сложное WPF-приложение, к которому у меня есть требование обфусцировать выходные сборки с помощью Dotfuscator (профессиональная версия - та, на которую у клиента есть лицензия).
Три вопроса:
- Процесс запутывания падает с
OutOfMemoryException
примерно в 85% случаев - Это занимает ДЛИННОЕ время - средний проход обфускации занимает около 56 минут
- Существует целая куча различных проблем, которые приводят к сбою приложения с обфусцированными сборками, от поисков на основе отражений до ресурсов.
Первую проблему, которую я смог решить, запустив через командную строку, в отличие от графического интерфейса пользователя (по крайней мере, он не падает), а третья не была бы такой большой проблемой, если бы я мог быстро выполнить итерацию комбинации вариантов вместо 5 попыток за рабочий день.
Это действительно общее время, которое убивает меня; Кто-нибудь знает какие-либо "быстрые" идеи, чтобы значительно сократить время, затрачиваемое на запутывание? Возможно ли, что я сделал какую-то глупость, вызвав в процессе какой-то "Vapor-lock", увеличивая время обработки? Нужно ли нажимать на клиента, чтобы использовать другой обфускатор?
Некоторые детали:
- Прибл. 38 сборок /exe в приложении (из которых, возможно, 5-10 являются dll сторонних производителей, помеченными как "артефакт", поэтому они не запутываются)
- Коробка представляет собой полусухой физический сервер, а не виртуальную машину.
- Я использую файл конфигурации для управления обфускатором, а не для обработки каждой сборки в отдельности.
- Я уже отметил ряд исключений в указанном файле конфигурации для таких вещей, как сгенерированные ресурсы
- Все сборки помечены как "библиотека"
Любые мысли и / или SWAGs будут наиболее цениться.
1 ответ
Вам нужно больше памяти, скорее всего. Dotfuscator не совсем легок в памяти при работе с большими проектами. Я бы порекомендовал 2 концерта как минимум для большинства проектов, и 4 концерта предпочтительнее. Кроме того, он может работать быстрее под 64-битной из-за дополнительной виртуальной памяти. Кроме того, вы можете убедиться, что теряете последнюю версию Dotfuscator, поскольку в прошлом между выпусками происходили некоторые улучшения производительности.
Исключения обычно не ускоряют Dotfuscator, если вы не исключаете целые сборки.