首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果我在一个应用程序中多次使用一个类,它是否只被编译到exe中一次?

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

Stack Overflow用户
提问于 2011-08-18 17:56:13
回答 4查看 299关注 0票数 4

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

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

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

如果只编译一次,有什么可行的替代方案来防止这种情况发生吗?

谢谢!

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-18 18:03:46

是的,即使你在不同的地方创建了几个类的实例,也只有一个方法的副本(实现),所以如果黑客修补这个类,所有的实例都会被修补。

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

顺便说一下,一般的智慧是,如果他们想要破解你的应用,他们会做的,无论发生什么,所以一个人不应该浪费太多的资源在保护方案上。唯一万无一失的方法是从试用版中排除一些(关键)功能,即

代码语言:javascript
复制
{$IFDEF trial_version}
  ShowMessage('Sorry, this function is not available in trial version');
{$ELSE}
  // do the thing
{$END}

但当然,如果完整版进入野外,它将被破解……

票数 13
EN

Stack Overflow用户

发布于 2011-08-18 20:45:50

如果在可能的情况下对函数和方法使用inline keyword,则可执行代码将是“多副本”的。但是,内联的使用有一些限制(参见链接文档)。

我同意Ain和Marco的观点,即在保护计划上花费精力可能会带来更多的麻烦而不是好处,而且使用现有的解决方案比推出自己的解决方案更有意义。

票数 4
EN

Stack Overflow用户

发布于 2011-08-18 18:55:35

是。标准的解决方法是将代码放在.inc中,并将其包含在多个单元中。

但这在安全设置中就没什么意义了。因为如果某人已经学会了搜索一种模式,他可以简单地重复搜索来找到其他出现的情况,这充其量只是一个小麻烦。

这就是为什么DIY保护往往是浪费时间的原因之一,我完全同意Ain的观点。( onguard的事情,以及这样一个事实:如果功能在exe中,它迟早会被解锁,从而提供足够的动力)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7105573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档