Основная задача — максимально усложнить понимание логики программы, чтобы конкуренты не смогли "форкнуть" проект или скопировать себе мой функционал.
От обфускатора требуется — убрать из сборок все осмысленные имена, слить мою сборку и внешние библиотеки в одну сборку и удалить неиспользуемые классы, убрать все неймспейсы и поместить все классы в корень, зашифровать строки и ресурсы.
Пока что пересмотрел эти обфускаторы:
Dotfuscator (пробная версия доступна только по спецзапросу, ответа я не дождался)
Xenocode Postbuild 2009 (полный шлак, к использованию не годится)
Spices.Net Obfuscator (глючит, кое-какой функционал вообще не работает)
Remotesoft Obfuscator/Linker (проект заброшен)
SmartAssembly (пока что выглядит как самый полноценный, но есть неприятные особенности)
Здравствуйте, Andrei F., Вы писали:
AF>Основная задача — максимально усложнить понимание логики программы, чтобы конкуренты не смогли "форкнуть" проект или скопировать себе мой функционал. AF>От обфускатора требуется — убрать из сборок все осмысленные имена, слить мою сборку и внешние библиотеки в одну сборку и удалить неиспользуемые классы, убрать все неймспейсы и поместить все классы в корень, зашифровать строки и ресурсы.
AF>Пока что пересмотрел эти обфускаторы: AF>Dotfuscator (пробная версия доступна только по спецзапросу, ответа я не дождался) AF>Xenocode Postbuild 2009 (полный шлак, к использованию не годится) AF>Spices.Net Obfuscator (глючит, кое-какой функционал вообще не работает) AF>Remotesoft Obfuscator/Linker (проект заброшен) AF>SmartAssembly (пока что выглядит как самый полноценный, но есть неприятные особенности)
AF>Посоветуйте хоть один нормальный?
http://eziriz.com/
Контора выпускает аж два обфускатора с разными названиями. Качайте, пробуйте.
Здравствуйте, Kore Sar, Вы писали:
KS>http://eziriz.com/ KS>Контора выпускает аж два обфускатора с разными названиями. Качайте, пробуйте.
Вроде там обфускатор только один. Вторая прога для добавления лицензионной защиты, насколько я понял.
Попробовал .NET Reactor
1) у окна открытия файлов при ресайзе сносит крышу
2) assembly merge не умеет удалять ненужные типы
3) ставлю режим защиты "Library" (чтобы не паковало в бинарный файл), запускаю обработку — повисло
Не годится.
Здравствуйте, Andrei F., Вы писали:
AF>Здравствуйте, Kore Sar, Вы писали:
KS>>http://eziriz.com/ KS>>Контора выпускает аж два обфускатора с разными названиями. Качайте, пробуйте.
AF>Вроде там обфускатор только один. Вторая прога для добавления лицензионной защиты, насколько я понял. AF>Попробовал .NET Reactor AF>1) у окна открытия файлов при ресайзе сносит крышу
Странно.
AF>2) assembly merge не умеет удалять ненужные типы
надо же, какие у Вас высокие требования.
AF>3) ставлю режим защиты "Library" (чтобы не паковало в бинарный файл), запускаю обработку — повисло
У меня ничего никогда не висло.
Если у Вас многое завязано на рефлексию и подгрузку ДЛЛ-ек во время работы, то этот обфускатор не подойдёт. Он всё обфусцирует в нативные вызовы.
AF>Не годится.
У него очень много опций. Вы, видать, дефолтовые попробовали.
Ничего странного — оно субклассировано, чтобы сделать окну нестандартную отрисовку. Просто лопухнулись с обработкой событий.
AF>>2) assembly merge не умеет удалять ненужные типы KS>надо же, какие у Вас высокие требования.
А чего высокого то — удалить библиотечные типы, на которые нет ссылок?
KS>У меня ничего никогда не висло.
Делается элементарно — первичная сборка exe, тип защиты "Library" — чтобы не паковал exe-шник. Хочу посмотреть, чего он там наобфусцировал. В хелпе написано:
In "Library" protection mode the main assembly (EXE and DLL files) is converted to a partially managed file. This way the protected assembly can still be handled as a managed file.
То есть такой выбор должен быть допустим. А оно тупо виснет
KS>У него очень много опций. Вы, видать, дефолтовые попробовали.
Здравствуйте, Andrei F., Вы писали:
AF>Здравствуйте, Kore Sar, Вы писали:
KS>>Странно. AF>Ничего странного — оно субклассировано, чтобы сделать окну нестандартную отрисовку. Просто лопухнулись с обработкой событий.
В нашем приложении с окнами всё ОК.
AF>>>2) assembly merge не умеет удалять ненужные типы KS>>надо же, какие у Вас высокие требования. AF>А чего высокого то — удалить библиотечные типы, на которые нет ссылок?
Я помолчу тут.
KS>>У меня ничего никогда не висло.
AF>Делается элементарно — первичная сборка exe, тип защиты "Library" — чтобы не паковал exe-шник. Хочу посмотреть, чего он там наобфусцировал. В хелпе написано: AF>
In "Library" protection mode the main assembly (EXE and DLL files) is converted to a partially managed file. This way the protected assembly can still be handled as a managed file.
AF>То есть такой выбор должен быть допустим. А оно тупо виснет
На сколько я помню тип защиты Library можно юзать только для dll-ек.
KS>>У него очень много опций. Вы, видать, дефолтовые попробовали. AF>А Вам, видать, за рекламу этой проги платят?
Та нет, мы просто её успешно пользовали. А потом заюзали ClickOnce, которые нативные файлы не поддеживает, и пришлось отказаться. ДА к тому же рефлексия не работала в некоторых сценариях.
Здравствуйте, Andrei F., Вы писали:
AF>Посоветуйте хоть один нормальный?
Попробуй еще http://deepseaobfuscator.com/
хотя мы пользуемся Spices.Net и пока особых проблем не было. Разве что они не умеют обфусцироавать Сильверлайт, хотя об этом заявлено.
И от суппорта ничего не добьешься.
AF>Xenocode Postbuild 2009 (полный шлак, к использованию не годится)
А чем он не угодил? Давно пользуюсь одной их старой версией. Может быть, один из первых пользователей... Работает надежно. Правда, не все методы и свойства обфусцирует. Других нареканий нет.
Здравствуйте, Kore Sar, Вы писали:
KS>В нашем приложении с окнами всё ОК.
Я говорю про их приложение. Такие глюки многое говорят про общее качество программы.
AF>>А чего высокого то — удалить библиотечные типы, на которые нет ссылок? KS> Я помолчу тут.
И правильно. Тем более что я в самом первом сообщении указал, что именно мне нужно от программы. Зачем предлагаешь то, что заведомо не подходит по требованиям?
AF>>
In "Library" protection mode the main assembly (EXE and DLL files) is converted to a partially managed file. This way the protected assembly can still be handled as a managed file.
KS>На сколько я помню тип защиты Library можно юзать только для dll-ек.
Хелп говорит о другом. Вот она цитата из него, видишь?
И мне не нужен exe-packer, который они выдают за супер-инновационную технологию защиты. Обыкновенные полностью валидные сборки, безо всяких извращений — всё, что мне нужно.
Здравствуйте, dsorokin, Вы писали:
AF>>Xenocode Postbuild 2009 (полный шлак, к использованию не годится) D>А чем он не угодил? Давно пользуюсь одной их старой версией. Может быть, один из первых пользователей... Работает надежно. Правда, не все методы и свойства обфусцирует. Других нареканий нет.
В ней "eliminate dead code" выкосил из моей проги статические конструкторы и несколько нужных типов. После этого она, естественно, не заработала.
Очень кривой. Например, я не смог просто сохранить проект — команды "Save" недоступны. Интерфейс так медленно перерисовывается, что просто глаз режет. Линкера похоже вообще нет, по крайней мере я нигде не нашел.
HD>хотя мы пользуемся Spices.Net и пока особых проблем не было. Разве что они не умеют обфусцироавать Сильверлайт, хотя об этом заявлено. HD>И от суппорта ничего не добьешься.
Я его тоже довольно долго использовал. Тебе удалось заставить работать deobfuscate stack trace?
При сборке проекта выдает ошибки про несколько классов в PowerCollections.
Еще было несколько случаев, когда проект собирался без ошибок, но сборка потом работала с багами. Отправил саппорту репро-пак, но он просто отмолчался. У меня и так настройки обфускации стоят почти минимальные — на максимальных прога просто не запускается.
AF>>>Xenocode Postbuild 2009 (полный шлак, к использованию не годится) AF>В ней "eliminate dead code" выкосил из моей проги статические конструкторы и несколько нужных типов. После этого она, естественно, не заработала.
Здравствуйте, dsorokin, Вы писали:
AF>>В ней "eliminate dead code" выкосил из моей проги статические конструкторы и несколько нужных типов. После этого она, естественно, не заработала. D>Любопытно. Этой опцией я не пользовался.
Кстати, я правильно понял — когда в проге появляется новый класс, нужно не забыть сходить в проект xenocode и добавить его в список типов для обфускации?