winforms 防止EXE文件被复制到另一台电脑-保持一些信息内EXE文件(例如.一些旗帜)

rbl8hiat  于 8个月前  发布在  其他
关注(0)|答案(2)|浏览(72)

我想防止可执行文件被复制到另一台电脑,因此我需要以某种方式保存信息内我的EXE文件,它已经被用于其他地方的另一台电脑。
我可以嵌入像用户的硬盘驱动器号到我的EXE文件,使这些信息将在此EXE复制到另一台PC的小块信息?
我想也许有一种方法可以读取和写入嵌入在EXE文件中的一些资源文件,但我认为资源文件是只读的,如果是这样,EXE文件中是否有一个地方可以保存我需要的信息?

owfi6suc

owfi6suc1#

你这样做是在打一场艰苦的战斗。创建一个本土的许可证计划是可能的,但要做好做大量工作的准备(我做过,所以我是从第一手经验出发的)。只是一些问题要解决:

  • 如果硬盘驱动器出现故障,需要更换,您的用户将无法使用该程序。每次发生这种情况,你都会接到一个愤怒的用户的支持电话。
  • 如果用户在虚拟机中运行您的程序,硬盘驱动器序列号将不是唯一的-任何人都可以克隆虚拟机,现在您的程序可以在另一台机器上运行。
  • 硬盘驱动器序列号可以更改-它们不直接来自硬件。
  • 如果硬盘驱动器是可移动驱动器怎么办?您的用户可以从可移动驱动器运行您的程序,然后继续将其移动到不同的机器。
  • 即使你完成了,你如何保护许可证信息不被修改?

如果你真的想授权你的产品,看看现有的授权产品-他们不便宜,但他们已经做了(相当数量的)工作,这是必要的,有任何形式的可靠性。
即使你只想得到最低限度的保护,也要考虑到这一点:你将不得不做 * 很多 * 工作来获得你的秘密令牌(不管是什么)的最低安全性。如果它的安全性是最低限度的,那么你做这些工作的意义是什么?如果你所做的只是强迫人们输入一个毫无意义的序列号,你只会惹恼你的诚实客户。如果有人想偷一些没有得到很好保护的东西,他们会偷的。一个“简单”的保护方案所做的就是惹恼你的用户,给你一种“虚假的保护感”。
我最终使用了Reprise RLM-我与这家公司无关,但我与他们的销售和支持人员有很好的经验,他们的产品在测试场景中运行良好。

aoyhnmkz

aoyhnmkz2#

好吧,我分析了所有提出的变体,并决定在我的情况下,最好开发自己的版权保护系统,因为我是一个独立开发人员,不会使用超大型应用程序。
以防万一,有人面临同样的问题-这里是算法(好吧,其中之一):
1.用户启动APP1.EXE

  1. APP1.EXE读取自己的一些变量,并添加硬盘序列号到它的末尾,例如。硬盘序列号-当你添加的东西结束时,它不会打破EXE文件,你不必担心PE头
    1.不幸的是,EXE不能在运行时保存自己,所以它保存了它的副本称为APP2.EXE与有关硬盘的信息
    1.保存APP2.EXE时,APP1.EXE通过Process.Start()将其作为一个单独的进程启动,然后自行终止
    1.现在APP2.EXE正在运行,并具有与APP1.EXE相同的内容+硬盘序列号,因此我们只需将APP2.EXE中的所有字节写回APP1.EXE,关闭当前进程并再次启动APP1.EXE
    1.从现在起APP1.EXE正在运行,并有所有需要的信息,有关当前硬盘驱动器,所以每次用户启动APP1.EXE它比较硬盘号码在其内容结束时与用户的PC上的实际一个,如果他们不同-终止该过程
    1.删除APP2.EXE,这样用户就不会意识到这些文件如何交换有关他的硬盘信息。
    有关自删除EXE的有用信息可以在这里找到:

P.S.我知道这就像一个巨大的安全漏洞(我不会提到所有这些),但是这个算法的实现只需要20行C#代码,并被转移到一个单独的DLL中,我可以在任何地方使用它。有没有在上面的算法和用户可以简单地采取这个应用程序和使用它的任何注册,我敢肯定,他们中的~ 80%不会意识到这个应用程序是如何防止复制.
实施链接:https://bitbucket.org/artemiusgreat/examples/src/ef7b60142277?at=master

相关问题