delphi - 如果我在应用程序中多次使用一个类,它是否只会被编译到 exe 中一次?

标签 delphi compilation

我正在评估试用保护系统的多种可能性,并提出以下问题:

如果我多次使用我的“试用检查”类(在应用程序中分散多次),它是否只会被编译到 exe 中一次?

我问的原因是,如果它只编译到 exe 中一次,那么修补这个单个类将使所有使用它的地方无效。

如果只编译一次,是否有任何可行的替代方案来防止这种情况?

谢谢!

编辑:我实际上并不是想推出自己的保护系统,我正在研究几个现有的解决方案,例如 OnGuard、mxProtector 和 TRegWare。在查看各种解决方案源代码时,我提出了这个问题。

最佳答案

是的,即使您在不同的地方创建该类的多个实例,也只有一份方法副本(实现),因此如果黑客修补该类,所有实例都将被修补。

您真的想推出自己的保护系统吗?想出一个好的系统并不容易,并且有几种现成的解决方案,如果您的预算有限,那么也许TurboPower OnGuard (现在是开源的)就可以了。

顺便说一句,普遍的看法是,如果他们想破解您的应用程序,无论如何他们都会这么做,所以人们不应该在保护方案上浪费太多资源。唯一万无一失的方法是从试用版中排除一些(关键)功能,即

{$IFDEF trial_version}
  ShowMessage('Sorry, this function is not available in trial version');
{$ELSE}
  // do the thing
{$END}

但是当然,如​​果完整版变得疯狂那么它就会被破解......

关于delphi - 如果我在应用程序中多次使用一个类,它是否只会被编译到 exe 中一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7105573/

相关文章:

scala - 编译后 SBT 应用任务

java - Eclipse 资源管理器中缺少小红色 "x"以及具有编译错误的 Java 源代码问题 View ?

C++编译时类的子类列表

delphi - Spring4D中如何使用多接口(interface)类

Delphi:使用 URL 转发下载文件

xml - Delphi 跨平台应用程序中 XML 文件的哪个库?

mysql - delphi独特的UPDATE和DELETE代码

delphi - 将 DeDe 常量转换为有效声明或其他接口(interface)提取工具?

f# - VS2008 和 VS2010 并行的 FSharp.Compiler.CodeDom

compilation - iOS9,企业应用中的位码