硬件序列号讨论。许可证保护

时间:2011-04-09 15:18:01

标签: vb.net visual-studio security hardware protection

我正在开发一些应用程序,它将获得硬盘序列号,然后我将使用该硬盘序列号进行产品许可证(cd-key)注册。现在我可以遇到的问题是:

  • 用户有2个硬盘驱动器,一旦我的应用程序从第一个硬盘驱动器获取其串口,它将注册它,那么如果用户以后改变硬盘驱动器的顺序呢?如果第二个硬盘成为主,第一个成为奴隶?可以通过获得两者并将它们组合起来来解决但是如果以后他会删除一个呢? :D
  • 如果用户的硬盘死机并购买新的硬盘怎么办?仍然是同一台PC只有另一个硬盘。所以许可证不再是沃尔德因为是另一个硬盘驱动器。
  • 有可能伪造它吗?示例我正在使用VB.net 2010并且应用程序正在使用框架(.net)所以有一些“dll”负责获取HDD的序列,因此可以替换这个“dll”(破解它)所以它返回一些硬编码的hdd系列?!?
  • 可以获得处理器序列吗?那会很棒但是可以做到吗?并且处理器是否有串行,我的意思是可能有但是有可能得到它吗?和abowe一样的问题可以通过改变“dll”或其他东西来伪造吗?
  • 还有其他建议或体验吗?

我看到有更多这样的问题,但无法找到答案,所以现在我问这里!

------已编辑/已添加:-------

如下所述,我忘了所有.net都可以在几秒内反编译!所以...

  • 制作自己的安装程序。 为什么? 如果我输入一个安装程序,你输入串口,只有串口可以使用然后安装软件,它的作用是什么?它将我的软件提取到你的计算机上,你再次拥有“.net”exe,你可以轻松地反编译并为它做一个破解,所以在哪里用串口进行安装!或者如果我的软件被一些混淆器“保护”,那么在这里安装串口是不可能的,我可以在我的软件中简单地包括串行注册并使用一些布尔商店注册= 1 || 0

  • 我从这里收到了一个人的电子邮件,顺便说一下。 duno,你收到了我的邮件:)他说了一些聪明的东西,为什么有些人不回答我的问题,这个讨论和他说的是:“害怕别人会看到我的代码,有多糟糕。”所以人们只是不想花时间在这上面。好吧,这不是问题,我知道我的代码是大“minestrone”,大混乱多字(变量)一些英语一些克罗地亚语所以很好我的软件工作这很重要,我知道我成功*我们都成功*每个人都知道的事情(另一个更多或更好。无论如何,这不是问题,问题是,我不希望软件是开源的,让我说我的软件是“photoshop”,现在有人下载点击那里,并有完整的代码,可以轻松复制粘贴更改一些事情,没有问题他做了很好的申请:)

  • 自定义编译器?有人有实验吗?一段时间会好吗? :)

  • 将来使用哪种其他解决方案或语言可以避免这种“开源”.net!我一直在环顾四周,所以对于vb.net,c#,c ++都是基于.net所以都是一样的。 vb6我又喜欢同样的事情。他们都可以轻松反应!什么语言不能这么容易反编译?我应该切换到汇编程序吗? :我开玩笑,我希望! :p

也许我太强调了,做了很多工作! duno你决定:)

请仔细阅读我的问题,请不要回答我说“盗版可以停止BLA BLA”和那些事情。这是我的问题所在!谢谢!

对于大胆的大人物抱歉,但有些人只阅读标题,然后回答愚蠢!如果你想谈论它,那么阅读问题,否则不要发布一些愚蠢的事情

4 个答案:

答案 0 :(得分:2)

  1. 是的,你必须要注意这一点。你需要几种后退方法来处理这个
  2. 你也必须意识到这一点。
  3. 一切都是假的,背后有一些能量。但是,如果你只是可以操纵程序本身,为什么假冒这样的id?所有.net代码都可以被反汇编和操作
  4. 我认为这也是可能的,但背后会遇到同样的问题。
  5. 其他建议:

    仅仅因为存在盗版行为,不要让您的客户体验不好。使用可重复使用的东西(如序列号或密钥文件),投资一个好的混淆器,让某些人更难检查你的代码,但最重要的是:让你的应用程序脱颖而出,以便人们购买它。即使你没有要求它,我也要说 - 你不能通过对你的程序强制执行orwellian监视来阻止盗版。这将驱使客户离开,因为使用您的应用程序是一件很麻烦的事情。使用串行或密钥文件,您仍然可以获得某种保护,客户喜欢它,因为它易于使用,如果他的计算机出现故障或星标不对,他就不必打电话给您/写支持票。海盗最终会打破它,但你的顾客很高兴,这才是最重要的。

答案 1 :(得分:2)

让我先回答你的问题:

  1. 如果硬盘的顺序发生变化,您的应用程序仍然可以在系统中找到该序列号。但是,在任何一种情况下,我都会采用一种方案,我使用系统分区的设备。
  2. 如果硬盘死机,用户将遇到麻烦。只要您坚持使用用户系统的唯一性来源,即没有良好的解决方案:即HDD序列。
  3. 绝对可能,是的。但是,在不同的层面。饼干总会选择最简单的方法。
  4. 是。但我担心这只适用于非托管代码。见Wikipedia。是的,这可以通过DLL放置再次规避(参见我对该问题的评论)。
  5. 现在让我给你一个对我很好的建议。使用机器帐户的SID(不要与具有众所周知的SID的SYSTEM混淆)。在你使用NewSid(顺便说一下已经由MS退休)之前,这需要更多的努力来改变,特别是在域环境中,并且可能具有非常令人讨厌和无法预料的效果。因此,如果要将应用程序绑定到Windows安装,则SID就足够了。 SID与您可以创建的UUID具有相同的优势,但它不像您存储在注册表或文件中的UUID那样易于操作。

    哦,在我忘记提及它之前。是的,即使使用SID也可以通过各种方式“破解”。但它平衡了用户对安全性需求的便利性。

答案 2 :(得分:0)

如果对最终用户/攻击者有价值,那么你所依赖的任何东西都可以并且将被欺骗。因此,将许可证锁定到HDD序列号不会对攻击者造成影响,但会严重扰乱您的客户。

处理器序列号也是如此 - 内联弹出一些代码以更改应用程序的读取内容太容易了。

你唯一合理的选择是加密狗 - 即特定的硬件,或者让他们注册并使用在线连接运行的方式,这样你就可以使用你控制的元素来验证它们(尽管如此,如果你的应用程序很高足够的价值,期望加密狗也被黑客攻击/复制!)

您最大的问题可能是过度安全 - 如果您以任何方式弄错了,您将疏远您的客户群。

人们会定期升级发生故障的硬盘或太小的硬盘,以及计算机中的大多数其他组件。如果你停止使用你的产品,即使是几天,他们也可能会去其他地方看看!

答案 3 :(得分:0)

你可以做你的建议,但也有问题。您所建议的是在许可世界中称为“机器绑定”。有一些商业工具可以帮到你(免责声明:我为一个这样的提供者工作Wibu-Systems)。你提出的建议有一些优点和缺点:

优点:不需要单独的硬件(加密狗),您可以使用自己的简单解决方案在基本级别实施。

缺点:可以在几分钟内破解,当用户更改硬件配置或将应用程序移动到新PC时会为用户创建问题,滚动自己会在用户显示的区域中引入新的错误以前没有经验。

为什么不使用商业解决方案?你也会编写自己的安装程序吗?你自己的编译器,链接器和调试器怎么样?