Обфускация сборок, которые ссылаются на сторонние сборки - PullRequest
2 голосов
/ 23 февраля 2011

Я готов завершить большой проект для клиента. Требования заключительные, сборка должна быть единой. Обычно я запутываю все свои сборки вместе, и в результате получается один файл. На этот раз, однако, я ссылаюсь на сторонние сборки, такие как PostSharp, Enterprise Libraries и некоторые API конкретного поставщика.

Когда я запутываю проект, я получаю одну сборку, но она больше не работает.

Проект является плагином для ACT! который требует класс для реализации определенного интерфейса. Если я соберу и скопирую все выходные файлы в папку плагина, он будет работать как положено и ACT! увидим плагин и он будет работать. Используя единственную запутанную сборку, она больше не работает. ACT! не увидит плагин.

Я могу только предположить, что это вызвано этими сторонними ссылками, поскольку я делал это в предыдущих проектах, просто никогда не используя какие-либо сторонние сборки или API.

Я использую Xenocode для обфускации, но я попробую что-нибудь.

Ответы [ 2 ]

1 голос
/ 24 февраля 2011

Никогда не следует запутывать сторонние сборки по следующим причинам:

  1. У вас нет контроля или знаний о внутренней работе кода, чтобы знать, как его запутывание повлияет на его работу. Даже если вы это делаете (например, с открытым исходным кодом), хотите ли вы тратить время на решение любых проблем, которые могут возникнуть, если эти сборки будут запутаны?
  2. Это не ваш IP, так что вы не получите никаких преимуществ от запутывания сторонних сборок, но вы получите все недостатки, описанные в # 1.

Попробуйте Crypto Obfuscator - он поддерживает включение сторонних сборок, не запутывая их, перечисляя их как «Дополнительные зависимости» - вы все равно получаете только одну сборку, поскольку зависимости встроены в вашу основную сборку и предоставляются во время разрешения сборки.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я работаю в LogicNP Software, разработчике Crypto Obfuscator.

1 голос
/ 23 февраля 2011

Первая проблема, скорее всего, не в том, что вы используете сторонние сборки, а в большинстве подобных интерфейсов ACT!ожидает и его реализация запуталась.Получите Reflector или даже ILDasm и посмотрите, реализует ли интересующий вас класс интерфейс (ы), требуемый ACT!

Я не использовал Xenocode, но я надеюсь, что у него есть способ указать, какие классы / методы не должныбыть запутанным.Ваша цель - не допустить запутывания интерфейса и его реализации.

Примечание. Я также рекомендовал бы взглянуть на требования к лицензированию сторонних компонентов, которые вы использовали, поскольку они могут не допускать такого слияния.

...