【问题标题】:Most secure way to license software [closed]最安全的软件许可方式[关闭]
【发布时间】:2023-03-13 05:31:02
【问题描述】:

获得软件许可的最佳和最安全的方法是什么?是否有这样做的现有程序?我想出售我的脚本,但我想确保用户不能自己重新分发或出售(当然,如果他们在自己的计算机上停用注册并选择转售,那是他们的选择)。

软件语言为VB.net。

由于我不确定是否可以托管任何类型的注册数据库,是否有任何方法可以安全地保持许可自包含?我希望用户能够下载演示并能够以某种方式升级到完整版。

感谢您的帮助!

如果目前没有软件可以做到这一点,我将如何制作一个?

【问题讨论】:

    标签: .net vb.net security licensing


    【解决方案1】:

    因为我不确定我是否 可以托管一个注册数据库 任何一种,有什么办法可以保持 安全地许可自包含?

    不,没有办法安全地做到这一点。即使你有注册数据库,也是可以破解的。

    从演示中删除完整版代码。如果您有少量买家,这将大大减少您的泄漏机会。

    如果你想制作版权保护,你应该开始阅读它。既然你在问这个问题,我可以说你需要很长时间才能做出体面的复制保护。最好聘请其他人为您做这件事。

    .net 混淆器可能是您最简单、最有效的解决方案。

    【讨论】:

    • 那有什么办法吗?
    • 有免费的 .net 混淆器吗?我在他们网站上的任何地方都找不到 Dotfuscator 下载...
    • 总有办法,但请询问 RIAA 和 DVD CCA 的效果如何。
    • 我找到了一个不错的“凤凰卫士”。效果很好!
    • @Cyclone:我觉得你要求一个“免费”程序来做这种事情有点讽刺。
    【解决方案2】:

    如果您的软件足够受欢迎并且做得很好,人们就会为它买单。你总是会有一个永远不会的百分比。与其浪费时间试图阻止他们,不如专注于改进产品。

    99.9% 的公司不想窃取某些东西,也不想根据需要更改您的软件。他们宁愿买开箱即用的东西。

    请记住,Fog Bugz from Fog Creek 附带完整的源代码,并且他们在那里销售软件没有问题,因为它是优质产品。

    质量很重要,重点不是安全。

    【讨论】:

    • 嗯,所以你基本上是在说,如果产品足够好并且按照它所说的那样做,那么有足够多的人会继续并以正确的方式购买它,这并不重要?有道理,幸好我没有为此收取太多费用。我知道价格越高,用户就越不愿意支付。
    • 这就是我要说的。将人们带入您的产品的是质量。集中精力。
    • 这就是我目前正在做的事情,它几乎可以出售了。我只有一个功能正在窃听,目前没有做任何事情,但我会尽快修复它
    • 重点是它很可能不会有任何区别。特别是如果您的产品目标受众是在商业活动中使用它的公司,他们更有可能只是购买有关任何保护措施的许可证,以便它们在法律上是明确的。如果是家庭用户,或者是版权几乎没有问题的国家(俄罗斯、中国……)的公司,那么无论如何都无关紧要。
    • 无论如何,我想我不应该太担心这个,你是对的。如果我想要一份软件副本,就个人而言,我最不愿意做的就是去寻找非法副本。我会立即去购买许可证。这个产品非常适合办公室使用,所以我猜公司可能也会使用它,并且他们会购买它。你认为盗版一年会损失多少钱? (百分比)
    【解决方案3】:

    看文章Developing for Software Protection and Licensing;它解释了如何选择一个解决方案,为什么你应该混淆你的应用程序,并提供了一些让你的代码更难破解的技巧。

    要记住的是,一旦您的应用程序在另一台机器上运行,就没有 100% 保证阻止执行的方法。如果你小心的话,你能做的就是把门槛提高到足够高,这样购买你的软件比破解它更容易。

    强制性免责声明和插件:我共同创立的公司生产OffByZero Cobalt software licensing solution for .NET,它原生支持VB.NET。

    【讨论】:

    • 看起来不错。强制性的烦人问题:我可以免费获得一份我制作的所有付费软件的副本吗? (主要是开玩笑)
    【解决方案4】:

    通常没有办法保护 .NET 软件不被破解。这太容易了(尤其是使用反射器)。所以你需要执行一些步骤才能在一定程度上进行保护:

    1. 混淆代码(通常是非常重要的任务,因为您无法混淆公开以引用它们的公共接口)。
    2. 如果软件是开发组件,则可以使用内置的 .NET 许可(通过在 Visual Studio 中使用 .licx 文件)对其进行保护。一家公司对此提供帮助:http://www.infralution.com/
    3. 用户注册服务器(这不会防止破解,但会防止“未经许可”的使用)。

    无论如何混淆是主要步骤,因为它是使 .NET 程序集更接近本机二进制文件的唯一方法。

    【讨论】:

      【解决方案5】:

      不要打扰。如果用户有足够的决心转售您的脚本,那么您绝对无法阻止他们。通过这样做,您可以限制出于非恶意原因可能想要调整您的脚本的用户。

      【讨论】:

      • 我知道,但我至少希望阻止人们在任何地方简单地发布副本。现在,某人重新分发我的脚本所需要的只是一封电子邮件或上传到服务器。
      • 但是,对于那些不想花费超过 5 分钟尝试时间的人来说,您可以增加难度。这些工具解决了一定比例的问题,而不是整个问题。如果 1000 人中有 50 人购买您的软件,因为他们不容易简单地复制它,那么这笔钱花得值。
      【解决方案6】:

      使用 .net?很难保护它。

      最好的办法是只做一个微不足道的系统并依靠人们的诚实。让那些真正购买您的软件的人变得轻松简单。

      演示?从下载中省略代码。

      基本上,不要太偏执......

      【讨论】:

        【解决方案7】:

        这并不是对许可问题的回答,但如果您担心潜在客户会反编译您的程序集,那么您应该研究混淆。

        混淆是在您的发布版本上执行的,它会大量修改应用程序中类、方法和字段的命名。如果用户尝试使用 Reflector 等工具重新生成源代码,他们将在尝试使代码编译或运行时遇到很大的困难。

        更新: 回答 Cyclone 的评论:Dotfuscator 可能是最著名的,因为它自 2003 年以来一直与 Visual Studio 一起发布(我认为;不确定它是否仅限于特定的 VS 版本)。在 Visual Studio 2008 中使用它时,一些快速的 Google 搜索出现了 tutorial,还有 some alternative options

        【讨论】:

        • 你有什么我应该使用的混淆器吗?
        • 我用的是Visual Basic 2008 express,没有自带>.
        【解决方案8】:

        只有一种方法可以确保您的软件不会被盗版,那就是让大部分逻辑和/或通信驻留在服务器上。即便如此,如果您的产品足够受欢迎,人们仍会尝试获取您的服务器软件以私下运行它。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-09-06
          • 1970-01-01
          • 2012-09-23
          • 2014-09-14
          • 2020-04-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多