如何使用Delphi防止程序被复制

时间:2012-04-09 16:29:58

标签: delphi delphi-xe2 piracy-prevention

我想知道,假设我开发了一个程序,可以访问客户端计算机,是否有办法开发程序只能在该计算机上运行,​​通过在计算机中写入唯一标识符(如果在代码和编译程序中有类似的东西。我使用的是Delphi XE2

4 个答案:

答案 0 :(得分:4)

是的,您可以通过将可执行文件绑定到计算机特征来防止某种程度的未经授权的使用。您可以自己做(有问题)或者您可以购买现成的解决方案来为您完成(免责声明 - 我为一家为这类问题提供解决方案的公司工作:Wibu-Systems) 。机器绑定有两个问题;我们可以帮助其中一个:

  1. 误报:由于用户升级或奇怪的驾驶员行为,机器特性可能会发生变化。这可能导致您的许可系统报告用户试图滥用许可证(误报)。这是这些系统中的地方性问题。 (无耻的自我推销:我们刚刚发布了一种新的绑定方法,以减少或消除这些错误。我们称之为SmartBind(tm)。

  2. 可破解性:因为任何机器绑定都必须使用OS调用来获取硬件“指纹”信息以进行验证,否则破解者可以修补用于始终返回已知“好”值的dll,从而允许破解软件。这些裂缝在bittorrent网站上猖獗。不幸的是,它没有很好的方法,虽然我们的方法使用一些加密mojo使其更难做。对于最终的反盗版,您必须使用加密设备,如CmStick,HASP或KeyLok。当然,NSA可以破解任何东西,但是像CodeMeter这样破解基于硬件的顶级解决方案的难度很小,除非收益真的很大。

  3. 我强烈建议您研究商业解决方案,仔细研究可用的选项。这个领域有很多供应商和几个好产品可供选择(当然,我认为我们的产品是最好的)。当您尝试处理各种配置问题和可能不满意的用户时,滚动您自己的解决方案将导致您下游的悲痛。

答案 1 :(得分:3)

简短的回答是没有可靠的方法来防止复制程序。当然,存在识别程序的特定实例,识别机器硬件等的技术,但是对于这些技术中的每一种,存在一种对抗技术以绕过真正想要解决问题的用户。无论是破解你的程序并改变它的外观(或完全禁用检查),虚拟化你正在寻找的硬件等等。总有一种方法。有人愿意投入时间和努力只是时间和精力。

答案 2 :(得分:0)

如果您想要一些简单的东西,这将为您提供硬盘卷ID作为一个数字,该数字对于每个机器栏黑客都应该是唯一的。

function GetHDSerialNumber: Dword;
var dw:DWord; mc, fl : dword; c:string;
begin
  c:=extractfiledrive(application.exename)+'\';
  GetVolumeInformation(Pchar(c),nil,0,@dw,mc,fl,nil,0);
  Result := dw;
end;

这适用于Delphi 2007,上面的版本是unicode,你自己就是这个问题。

答案 3 :(得分:0)

虽然没有防黑客硬件这样的东西,所提到的Wibu系统还没有被黑客入侵,它具有强大的反黑客功能,包括物理设计功能,使最复杂的黑客几乎不可能。

像i-Lock这样的其他解决方案已被黑客入侵,但到目前为止,Wibu是一个很好的答案。我刚买了他们的初学者包。