使用许可证保护自定义 .NET 组件的最佳方法是什么?

发布于 2024-07-15 12:23:28 字数 1436 浏览 5 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

喵星人汪星人 2024-07-22 12:23:29

这里有很多细节缺失。

您是从某人处获得许可还是尝试创建许可?

开源、闭源、销售? 如果出售,提供货源吗?

组件/应用程序的最终用途是什么? 您是托管它(如多租户站点)还是更多的是 COTS?

您的竞争对手的销售模式是怎样的? 这似乎对他们有用吗? 例如,这听起来合理吗? <- 模仿那个。

当您回答这些问题时,您将找到适合您需求的许可证。

There is a lot of missing detail here.

Are you licensing from someone or trying to create a license?

Open source, closed source, selling? If selling, do you provide source?

What is the final usage of the component / application? Are you hosting it (like a multi-tenant site) or is it more COTS?

What are your competitors doing with their sales model? Does it appear to be working for them? e.g. does it sound reasonable? <- emulate that.

As you answer those questions, you'll find the license that fits your needs.

悍妇囚夫 2024-07-22 12:23:29

通用公共许可证。 或者将其声明为公共领域。 或者是 24 页的 EULA,限制用户在使用该组件时剃须的能力。 或类似的东西。

您为什么不告诉我们您正在尝试做什么、预期用途是什么以及您希望发生什么?

GPL. Or declaring it public domain. Or a 24-page EULA that restricts the ability of users to shave while using the component. Or something like that.

Why don't you tell us what you are trying to do, what the intended uses are, and what you'd like to have happen?

静待花开 2024-07-22 12:23:29

当您提供可升级到完整版本的软件试用版(换句话说,包含所有功能的程序集)时,您最终无法采取很多措施来防止有人对其进行黑客攻击。 (使用 .net 比使用本机程序集更容易)。

签名& 混淆是防止它以非常可读的形式进行逆向工程的唯一方法,但仅使用像反射器这样的东西基本上就能给你完整的结果。

保持许可外观的最简单方法之一是:

  • 使用公钥/私钥加密将许可信息(到期日期、启用的功能等)保存到文件中
  • 将公钥包含在程序集中
  • 对加密信息进行解码启动您的应用程序以检查某人是否有权使用您的应用程序。
  • 必要时使用您的私钥生成许可证并分发这些文件(如果数据足够小,则分发密钥)

作为替代方案,您可以使用散列码以明文形式包含许可信息(这是许可密钥,算法还应该支持公共密钥) /私钥)以明文形式与应用程序一起使用,并且仅检查许可信息是否与哈希码匹配。

When you're giving out trials of your software that are upgradeable to full versions (in other words assemblies that contain all features), there's not a whole lot you can do to prevent someone from hacking it in the end. (with .net it's even easier then with native assemblies).

Signing & Obfuscation is the only way to prevent it from being reverse engineered in a very readable form but just using something like reflector will basically give you the complete.

One of the simplest ways to keep up the appearance of licensing is to:

  • use public/private key encryption to save licensing information (expiration date, enabled features, etc) into a file
  • include the public key in the assembly
  • decode the encrypted information on the start of your application to check if someone is licensed to use your application.
  • generate licenses when necessary with your private key and distribute those files (or keys if the data is small enough)

As an alternative you can include the licensing information in clear text with a hash code (this is the licensing key, algorithm should also support public/private key) in clear text with the application, and only check if the licensing information matches the hash code.

眼眸 2024-07-22 12:23:28

对于“闭源”场景,请考虑使用混淆。 我一直在使用 SmartAssembly 并且对结果非常满意。

至于许可模式。 您正在谈论 .net 组件,因此目标受众是开发人员。 我认为他们不会提供有限的免费试用。 如果您打算向开发者社区出售有价值的东西,请准备好在 Rapidshare 或 torrent 上查看“全功能”版本。

我建议集中精力支持和频繁更新/增强而不是保护。 在大多数情况下,“企业”购买支持而不是二进制文件。

如果您需要一些工具标题,为什么不直接用谷歌搜索呢? “.net 许可”查询将为您提供链接提示音。

希望有帮助。

As for a "Closed Source" scenario consider using obfuscation. I've been using SmartAssembly and very satisfied with results.

As for licensing modes. You are speaking about .net components so the target audience are developers. I don't think they will deal with free limited trials. If you are going to sell something valuable to developer community get ready to see a "Full Featured" version on Rapidshare or torrents.

I would recommend concentrating on support and frequent updates/enhancements rather than protection. In most cases "business" buys support rather than binaries.

If you need some tool titles why don't you just google for that? ".net licensing" query will give you tones of links.

Hope that helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文