вы можете попытаться проверить, требуется ли модуль.
из документации:
package.loaded Таблица, используемая требованием для управления, какие модули уже загружены , Если вам требуется модуль modname и package.loaded [modname] не является ложным, требуется просто вернуть сохраненное там значение.
blockquote>С помощью этого вы могли бы написать:
if not package.loaded ['modulename'] then main () end
Ну, проблема с такими языками, как C # / Java, заключается в том, что они, как правило, намного проще де-путать. Способ обеспечить это, как правило, заключается в том, чтобы помещать этот материал в веб-сервис, но вы сказали, что не можете этого сделать. Как переносить конкретные нетривиальные функции на язык, такой как C, и обфускать это. Затем ваша программа C # может использовать отражение для совершения вызовов этой внешней / неуправляемой dll. Это увеличило бы трудность де-обфускации, но проблема в том, что если кто-то хочет, чтобы это было достаточно плохо, они могут понять это, поскольку это клиентская сторона.
Возможно, что юридическое действие является единственным реальное решение здесь, но это не сайт для юридических консультаций, и я не квалифицирован, чтобы дать его, если бы это было.
Кроме того, это может быть бизнес-решение. Рассмотрите возможность создания своего программного обеспечения с открытым исходным кодом и отправьте пожертвование. Я также не компетентен давать бизнес-консультации, но это стоит рассмотреть. Это может фактически увеличить ваш доход, не говоря уже о других преимуществах, которые приходят с выпуском программного обеспечения с открытым исходным кодом.
Вы могли бы взглянуть на многие инструменты обфускации, которые есть там, например те, которые упомянуты в https://stackoverflow.com/questions/805549/free-obfuscation-tools-for-net (обратите внимание: вопрос недоступен для просмотра).
EDIT: связанный выше вопрос был удален и, следовательно, недоступен для просмотра. В качестве справочника здесь приведен список текущих рабочих ссылок, размещенных в вышеуказанном вопросе, извлеченных с помощью некоторого пользователя:
http://gapotchenko.com/eazfuscator.net http://codefort.org/download http://orangeheap.blogspot.nl http://confuser.codeplex.com (сменил https://yck1509.github.io/ConfuserEx/ ) http://ntoolbox.com
Есть Dotfuscator ( http://www.preemptive.com/products/dotfuscator/overview ). Но лучшим решением в некоторых случаях является предложение того, что вы делаете в качестве веб-сайта (Программное обеспечение как услуга).
Рассмотрим этот инструмент, например, для преобразования VB в C #: http: // converter .telerik.com /
Или этот инструмент для форматирования JSON: http://jsonformatter.curiousconcept.com/
Это может или может не работать для вас. Я не знаю, какой характер программного обеспечения вы пытаетесь защитить.
Нет, ваш код должен содержать информацию, необходимую для дешифрования, ее невозможную проблему решить.
Лучшее решение - разместить свою интеллектуальную собственность на сервере в облаке, к которому у вас есть доступ. Дайте своим клиентам уникальный логин, проверите их доступ к проверке на наличие злоупотреблений, отключите нагрузку на работу на ваших компьютерах клиентов, но держите свои алгоритмы в облаке.