публичные члены eazfuscator не запутываются

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

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

Я уже пробовал использовать ObfuscationAttribute

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

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

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


person Daniel Waidele    schedule 25.09.2014    source источник


Ответы (1)


Как правило, обфускаторы не скрывают публичных / защищенных членов.

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

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

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

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

Обновление:

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

person Sriram Sakthivel    schedule 25.09.2014
comment
Таким образом, защита Phoenix настраивается и для общедоступных членов, но это нарушает функциональность, потому что есть сборки, которые зависят от этой библиотеки. Я просто подумал, что можно обфускать эти сборки вместе, чтобы имена в обеих сборках изменялись одинаково, чтобы программа работала. - person Daniel Waidele; 26.09.2014
comment
@DanielWaidele Я не думаю, что вы получите такую ​​возможность в бесплатных инструментах обфускации. Вы можете получить это в коммерческих инструментах, хотя я не уверен. - person Sriram Sakthivel; 26.09.2014
comment
Вы можете подумать о слиянии всех сборок в одну, а затем скрыть публичные члены. - person Sriram Sakthivel; 26.09.2014
comment
Eazfuscator имеет функцию слияния. Хорошо работает с этим в моем тестовом проекте. Спасибо за вашу помощь - person Daniel Waidele; 26.09.2014
comment
@DanielWaidele Я рад, что вам это помогло. Я тоже добавлю это в свой ответ. - person Sriram Sakthivel; 26.09.2014