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

如何使用Delphi防止程序被复制,delphi,delphi-xe2,piracy-prevention,Delphi,Delphi Xe2,Piracy Prevention,我想知道,比如说我开发了一个程序,可以访问客户端的计算机,是不是没有办法开发这个程序,这样它就只能在那台机器上运行,通过在代码中写入计算机的唯一标识符,然后编译程序。我使用的是Delphi XE2简而言之,没有可靠的方法来防止复制程序。当然,有一些技术可以识别程序的特定实例、识别机器硬件等,但对于每一种技术,都有一种对抗技术可以绕过它,供真正想惹麻烦的用户使用。无论是黑客攻击你的程序,改变它的外观,还是完全禁用检查,虚拟化你正在寻找的硬件,等等,总有办法的。这只是某人愿意投入的时间和精力的问题。

我想知道,比如说我开发了一个程序,可以访问客户端的计算机,是不是没有办法开发这个程序,这样它就只能在那台机器上运行,通过在代码中写入计算机的唯一标识符,然后编译程序。我使用的是Delphi XE2

简而言之,没有可靠的方法来防止复制程序。当然,有一些技术可以识别程序的特定实例、识别机器硬件等,但对于每一种技术,都有一种对抗技术可以绕过它,供真正想惹麻烦的用户使用。无论是黑客攻击你的程序,改变它的外观,还是完全禁用检查,虚拟化你正在寻找的硬件,等等,总有办法的。这只是某人愿意投入的时间和精力的问题。

是的,通过将可执行文件绑定到机器特征,可以防止某种程度的未经授权的使用。您可以自己解决问题,也可以购买现成的解决方案为您解决问题免责声明—我为一家为此类问题提供解决方案的公司工作:。机器装订有两个问题;我们可以帮助解决其中一个问题:

误报:由于用户升级或奇怪的驱动程序行为,机器特性可能会发生变化。这可能会导致您的许可证系统报告用户试图滥用许可证为假阳性。这是这些系统中普遍存在的问题。无耻的自我推销:我们刚刚发布了一种新的绑定方法,以减少或消除此类错误。我们称之为tm

可破解性:由于任何机器绑定都必须使用操作系统调用来获取硬件指纹信息以进行验证,破解程序可以修补用于始终返回已知良好值的DLL,从而允许破解软件。这些类型的裂缝在bittorrent网站上非常猖獗。不幸的是,虽然我们的方法使用了一些加密魔咒,使其更难实现,但没有很好的解决方法。为了实现反盗版的终极目的,你必须使用加密设备,如a、HASP或KeyLok。NSA当然可以破解任何东西,但破解基于硬件的顶级解决方案(如CodeMeter)的难度使其不太可能,除非回报确实巨大


我强烈建议您研究商业解决方案,仔细研究可用选项。在这个领域有很多供应商,有好几种产品可供选择。当然,我认为我们的产品是最好的。当您试图处理各种配置问题和可能不满意的用户时,滚动您自己的解决方案会给下游带来很多麻烦

如果您想要一些简单的东西,这将为您提供硬盘卷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,你自己解决这个问题。

虽然没有防黑客的硬件,但Wibu系统还没有被黑客攻击,它具有强大的反黑客功能,包括物理设计功能,使得最复杂的黑客攻击几乎不可能


其他解决方案,如i-Lock已经被黑客攻击,但到目前为止,Wibu是一个很好的答案。我刚买了他们的入门包。

使用加密狗。你可能有一些想法:我仍然是编程的新手,所以整个加密狗的概念是陌生的。你可以试试API。问题是,客户端将无法破解任何东西,但他们可以复制cd或dvd。这就是为什么我只想知道是否有一些API或东西可以帮助我阅读电脑的硬件并防止复制增益,硬件可以虚拟化,你的应用程序永远不会知道区别。因此,您不能仅依赖于此。可以通过使用3个ID并静默地接受其中1个ID的更改来最小化误报问题。只有当两个或更多的人改变时,才升起旗帜。