У меня возникает следующая сценарий:
Мне нужно динамически компилировать сборку на клиентском компьютере, поэтому в настоящее время я развертываю источник этой сборки вместе с моим основным исполняемым файлом, а затем с помощью MSBuild динамически компилировать источник в сборку.
Поскольку я не хочу открыто распространять свой источник вместе с приложением, я собираюсь отправить зашифрованные исходные файлы и затем дешифровать его на клиентском компьютере до его создания. Но даже здесь любой может остановить выполнение после точки дешифрования, и мой источник будет там незашифрованным до того, как он будет скомпилирован, и исходный файл будет удален.
Есть ли способ защитить свой источник и в то же время скомпилировать его на месте клиента?
PS: Я знаю, что лучше перестать беспокоиться о краже исходного кода, но я также не хочу так легко сделать его доступным для сценария kiddie.
Edit: я, вероятно, нужен инструмент запутывания, который преобразует исходный код в запутанном код (не затемненные сборках). Затем я могу отправить этот запутанный код вместе с моим приложением и скомпилировать его на лету.Динамическое дешифрование и компиляция исходного кода
ответ
Вы можете использовать Obfuscation (Obfuscation in .NET), что существенно затруднит понимание кода для читателя.
Если это не режет его для вас, то вы можете подумать о создании своей логики в качестве веб-служб, а затем просто выставляете свой API вместо всего решения. При этом, скорее всего, это будет больше работать, так как вам придется создавать клиентское приложение, которое будет потреблять ваши веб-сервисы.
EDIT: Согласно вашему комментарию, вы можете захотеть взглянуть на this MSDN страницы, которая показывает, как процесс запутывания может быть автоматизирован путем вызова Dotfuscator
. Это должно поставляться свободно с вашей IDE. В моем случае, у меня есть файл MSI (я думаю, что вам нужно установить его первым), расположенный здесь: {VS2010 ISO}\WCU\Dotfuscator\DotfuscatorCE.msi
Случайные предложения:
Для слегка скрывающего кода вы можете вставить его в качестве ресурсов в сборки и сохранить их перед компилирование.
В качестве дополнительного шага вы можете сохранить как IL вместо C# - может быть более болезненным делать, но труднее читать (особенно если вы используете IL из запутанного кода).
Или используйте конструкторы CodeDOM или IL для непосредственного создания сборок из кода.
Действительно может быть лучше реорганизовать код, так что вам не нужно включать в свой код на всех и просто добавить код клиента ...
Я действительно скрываю его внутри ресурса, но это не решение. И код IL можно легко декомпилировать на любой язык, совместимый с CLS. –
- 1. Компиляция исходного кода Chromium
- 2. Компиляция исходного кода приложения для Android и проверка кода
- 3. Компиляция настроек из исходного кода Android
- 4. Компиляция исходного кода java в native exe
- 5. ошибка произошла компиляция gcc из исходного кода
- 6. Компиляция исходного кода java на linux
- 7. azure-sdk-for-net: Компиляция исходного кода
- 8. Компиляция исходного кода пакета для Android
- 9. Компиляция старого исходного кода Java с eclipse
- 10. компиляция исходного кода java с ant
- 11. Компиляция исходного кода делает .jar значительно меньше?
- 12. Компиляция исходного кода в Java 1.6.0
- 13. Компиляция из исходного кода в package.json
- 14. Компиляция кода исходного кода Android на ubuntu 9.10
- 15. Компиляция и время выполнения исходного кода C++ vs C
- 16. Компиляция исходного кода Vim с помощью python2.7 и python3.x
- 17. Вредоносный сайт: дешифрование кода?
- 18. WRT компиляция исходного кода на Mac, что такое ldd?
- 19. Является ли RVM лучше, чем компиляция Ruby из исходного кода?
- 20. Изменение исходного кода вашего исходного кода
- 21. Компиляция исходного кода Xcode для отправки проекта Xcode
- 22. Компиляция исходного кода в режиме отладки с помощью CodeDomProvider
- 23. PCL - Glib Компиляция из исходного кода, привязка FFI
- 24. ошибка с «pmem.c» компиляция исходного кода Linux для android
- 25. Qt 4.1.4 Компиляция исходного кода в Windows с помощью MinGW
- 26. Компиляция SBCL из исходного кода в Mac OS X
- 27. компиляция исходного кода на 2 разных версиях gcc
- 28. Получение исходного кода из двоичного кода
- 29. компиляция glibc из исходного кода с помощью отладочных символов
- 30. Автоматическая компиляция и запуск стороннего кода
Для запутывания части, я должен был бы бесплатный инструмент, который обеспечивает запутывания через API или командной строки, поскольку мне нужно будет сделать это через код. Я не знаю ни одного такого обфускатора. Пожалуйста, дайте мне знать, знаете ли вы. И я не хочу привлекать веб-сервисы. –
@HarshMaurya: Я обновил свой ответ. – npinti
Спасибо, только одно, у меня есть права на его доставку на клиентскую машину? –