2014-01-30 3 views
0

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

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


Edit: я, вероятно, нужен инструмент запутывания, который преобразует исходный код в запутанном код (не затемненные сборках). Затем я могу отправить этот запутанный код вместе с моим приложением и скомпилировать его на лету.Динамическое дешифрование и компиляция исходного кода

ответ

1

Вы можете использовать Obfuscation (Obfuscation in .NET), что существенно затруднит понимание кода для читателя.

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

EDIT: Согласно вашему комментарию, вы можете захотеть взглянуть на this MSDN страницы, которая показывает, как процесс запутывания может быть автоматизирован путем вызова Dotfuscator. Это должно поставляться свободно с вашей IDE. В моем случае, у меня есть файл MSI (я думаю, что вам нужно установить его первым), расположенный здесь: {VS2010 ISO}\WCU\Dotfuscator\DotfuscatorCE.msi

+0

Для запутывания части, я должен был бы бесплатный инструмент, который обеспечивает запутывания через API или командной строки, поскольку мне нужно будет сделать это через код. Я не знаю ни одного такого обфускатора. Пожалуйста, дайте мне знать, знаете ли вы. И я не хочу привлекать веб-сервисы. –

+0

@HarshMaurya: Я обновил свой ответ. – npinti

+0

Спасибо, только одно, у меня есть права на его доставку на клиентскую машину? –

1

Случайные предложения:

Для слегка скрывающего кода вы можете вставить его в качестве ресурсов в сборки и сохранить их перед компилирование.

В качестве дополнительного шага вы можете сохранить как IL вместо C# - может быть более болезненным делать, но труднее читать (особенно если вы используете IL из запутанного кода).

Или используйте конструкторы CodeDOM или IL для непосредственного создания сборок из кода.

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

+0

Я действительно скрываю его внутри ресурса, но это не решение. И код IL можно легко декомпилировать на любой язык, совместимый с CLS. –

Смежные вопросы