Общественные участники eazfuscator не запутаны

Я пытаюсь запутать проект.net с помощью eazfuscator.net. Проблема в том, что когда я декомпилирую его с помощью.NET Reflector, вы можете увидеть большую часть кода. Все частные участники запутаны, но публичные участники дают много информации о программе.

Можно ли также запутать публичных членов моей библиотеки? Я знаю, что это не делается программой, потому что к открытым членам обычно обращаются из других сборок. Но не должно ли быть возможно запутать все решение так, чтобы эти обращения из других сборок также были переименованы из инструмента?

Я уже пытался использовать ObfuscationAttribute

[assembly: Obfuscation(Feature = "Apply to type * when public: renaming", 
                       Exclude = false)]

но это не имело никакого значения.

Так можно ли сделать что-то подобное с eazfuscator или, может быть, другим инструментом?

1 ответ

Решение

В общем, обфускаторы не будут запутывать публичных / защищенных членов.

Они делают это по определенной причине. Предположим, у вас есть открытый член в сборке (скажем, dll). Обычно сборки создаются для совместного использования кода. Что если обфускатор изменил имена членов и классов? Как это будет работать, когда от этого зависит другая сборка?

Если вообще вы хотите запутать класс, почему это public На первом месте? Вы всегда можете сделать это internal если он не предназначен для использования вне сборки.

Обфуксаторы хороши в обработке внутренних типов / членов. Он не только запутывает членов класса, но и делает еще один шаг, чтобы переименовать сам класс.

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

Обновить:

Один из вариантов - объединить все зависимые сборки в одну гигантскую сборку (exe), а затем скрыть объединенную сборку с помощью опции обфусцировать открытые элементы. Таким образом, вы можете одновременно запутывать публичных участников, ничего не нарушая.

Другие вопросы по тегам