我想防止可执行文件被复制到另一台 PC,因此我需要以某种方式将信息保存在我的 EXE 文件中,说明它已经在另一台 PC 的其他地方使用过。
我可以在我的 EXE 文件中嵌入一小段信息,例如用户的硬盘驱动器号,以便在将此 EXE 复制到另一台 PC 时可以使用这些信息吗?
我想也许有一种方法可以读取和写入嵌入在 EXE 文件中的某些资源文件,但我认为资源文件是只读的,如果是这样,EXE 文件中有一个地方可以保存我需要的信息吗?
我想防止可执行文件被复制到另一台 PC,因此我需要以某种方式将信息保存在我的 EXE 文件中,说明它已经在另一台 PC 的其他地方使用过。
我可以在我的 EXE 文件中嵌入一小段信息,例如用户的硬盘驱动器号,以便在将此 EXE 复制到另一台 PC 时可以使用这些信息吗?
我想也许有一种方法可以读取和写入嵌入在 EXE 文件中的某些资源文件,但我认为资源文件是只读的,如果是这样,EXE 文件中有一个地方可以保存我需要的信息吗?
你正在以这种方式打一场艰苦的战斗。创建一个本土的许可计划是可能的,但要准备好做很多工作(我做到了,所以我从第一手经验谈起)。只是一些需要解决的问题:
如果您真的想为您的产品授权,请查看现有的授权产品 - 它们并不便宜,但它们已经完成了(相当多的)工作,这些工作对于任何类型的可靠性都是必要的。
即使您只想获得最低限度的保护,请考虑这一点:您必须做很多工作才能使您的秘密令牌(无论是什么)获得最低限度的安全性。如果它的安全性最低,那么你做所有这些工作又有什么意义呢?如果你所做的只是强迫人们输入一个毫无意义的序列号,你只会惹恼你的诚实客户。如果有人想偷一些没有得到很好保护的东西,他们就会偷。一个“简单”的保护方案所做的只是让您的用户感到厌烦,并给您一种错误的保护感。
我最终使用了Reprise RLM——我与这家公司无关,但我对他们的销售和支持人员有很好的体验,他们的产品在测试场景中运行良好。
好的,我分析了所有提出的变体,并决定在我的情况下开发自己的复制保护系统会更好,因为我是独立开发人员并且不会使用超大型应用程序。
以防万一,有人面临同样的问题 - 这是算法(嗯,其中之一):
可以在这里找到有关自删除 EXE 的有用信息:
PS 我知道这就像一个巨大的安全漏洞(我不会全部提及),但是这个算法的实现只需要 20 行 C# 代码,并被移动到一个单独的 DLL 中,我可以在任何地方使用它并且它可以工作。上面的算法中没有任何注册,用户可以简单地拿走这个应用程序并使用它,我相信大约 80% 的人不会意识到这个应用程序是如何防止复制的。
实施链接:https ://bitbucket.org/artemiusgreat/examples/src/ef7b60142277?at=master