Как преобразовать С# в DLL, чтобы скрыть исходный код?

Как я могу преобразовать свой код C# в файл DLL таким образом, чтобы пользователь DLL не мог просматривать мой исходный код?

Когда я создаю DLL, как всегда, создавая проект библиотеки классов, импортируя свои классы и компилируя его, исходный код все еще можно просмотреть.


person Ali    schedule 05.02.2009    source источник


Ответы (6)


Я считаю, что вы ищете обфускатор. Это инструмент, который берет скомпилированную DLL и переписывает код так, чтобы он не подвергался осмысленной декомпиляции другим пользователем. Visual Studio поставляется с бесплатным Dotfuscator.

Обратите внимание, что на самом деле это не помешает людям посмотреть ваш код. Вместо этого они будут смотреть на очень странный перевод вашего кода. Невозможно запретить людям просматривать декомпилированные версии вашего кода на C# или любом другом языке .Net, если уж на то пошло.

Это не то, что уникально для C#. Это фактически недостаток каждого существующего языка. Вполне возможно декомпилировать код C. Разница, однако, заключается в том, что гораздо проще поддерживать большую часть исходной структуры кода при декомпиляции управляемых языков (например, .Net и Java), поскольку метаданные сохраняют исходную структуру.

person JaredPar    schedule 05.02.2009

обфускация - это то, что вы хотите найти.

В визуальной студии есть бесплатная (ограниченная) версия под названием Dotfuscator.

Использует причудливые методы для переименования вашего кода и изменения путей потока, чтобы скрыть его.

person Spence    schedule 05.02.2009

Попробуйте использовать обфускатор.

person Anton Gogolev    schedule 05.02.2009

Если вы разрабатываете настольные приложения, преобразование вашего кода в Dll не скроет его (есть много инструментов для декомпиляции файлов dll или exe).

но если вы используете Asp.Net, то вы можете скомпилировать свой сайт в Dll, и код не будет виден на страницах aspx, он будет скомпилирован в Dll, вы можете сделать это, щелкнув правой кнопкой мыши свой проект в обозревателе решений , затем выберите «Опубликовать веб-сайт».

Но во всех случаях файлы .Net Exe и DLL будет легко декомпилировать и снова извлечь исходный код, если вы не используете инструмент для обфускации вашего кода.

person Mohammed Nasman    schedule 05.02.2009
comment
И даже с обфускатором ваш код .NET по-прежнему проще реконструировать, чем если бы вы скомпилировали код C++ прямо в собственный машинный код. И даже это можно сломать. Безопасность через неизвестность заведет вас так далеко... - person Vojislav Stojkovic; 05.02.2009
comment
Правильно, потому что я использую Delphi win32 в качестве основной IDE для разработки настольных приложений ;-) - person Mohammed Nasman; 05.02.2009

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

В Visual Studio встроен стандартный обфускатор. В меню выберите Инструменты / Dotfuscator Community Edition.

person GvS    schedule 05.02.2009

Я думаю, что мой ответ на аналогичный вопрос об обфускации JavaScript применим и здесь: короче , Зачем беспокоиться? На ваш вопрос уже был дан ответ здесь («используйте обфускатор»), но я подумал, что не мешало бы узнать, каковы ваши мотивы. Как правило, код, который вы даете людям, находится «в руках врага» — если кто-то захочет его использовать/выяснить, как он работает достаточно плохо, он это сделает.

person Coderer    schedule 05.02.2009