【问题标题】:Wrap and Protect executable包装和保护可执行文件
【发布时间】:2011-11-04 11:35:49
【问题描述】:

我正在开发一种复制保护软件,并且正在尝试围绕任何类型的可执行文件(托管和非托管)创建一个包装器。然后,此包装器将尝试执行包装后的可执行文件,而不像往常一样将其写入磁盘,并使用Process.Start() 执行它。

我使用 .Net 4.0 Assembly 和 Appdomain 来让它工作,但我已经阅读和测试过,它只适用于 .Net 可执行文件。我将如何四处执行任何类型的可执行文件而不将其“裸”写入驱动器?

例如,我可以从加密的压缩文件中执行它吗? 还是 MemoryMappedFile?

【问题讨论】:

  • AFAIK 正常的可执行文件在执行前不会写入磁盘。我不知道.Net。无论如何,所有可执行文件都需要以机器代码(这意味着未加密和未压缩)在 RAM 中才能执行。
  • @m0skit0 - .NET 应用程序的工作方式与普通可执行文件类似。
  • 我认为您无法使用 Process.Start() 启动它 - 您可以将程序加载到内存中,然后对它的起始地址执行 jmp,但可能有各种各样这样做的可怕安全问题。
  • 要执行它们,它们必须要么在磁盘上,要么完全、未压缩和未加密地加载到内存中。我想你可以然后调用入口点,剩下的就交给它了。我认为从 .NET 做这件事有点牵强...

标签: c# c++ wrapper


【解决方案1】:

真的是在浪费时间。您不能阻止他人复制您的可执行文件、获取您的代码或其他任何事情。即使您可以完美地保护磁盘上的可执行文件,当它开始运行时,有人可以使用调试器转储可执行文件,甚至是内存映射文件。这就是 Xenocode、.NET Reactor 或任何其他打包程序等产品被击败的原因。

对你来说更好的选择是停下来想想你真正想要实现的目标是什么。您是否担心有人违反许可协议?您是否担心您的软件出现在海盗湾?如果您制作有用的软件,那么这两件事都是偶然的,而不是可能性。如果合适的话,用版权保护你的软件,用专利保护你的算法。那么你就有法律追索权去追究违规者。

很抱歉打破了你的泡沫,但没有不能打败的技术解决方案。可以模拟加密狗,可以修补 Web 服务,可以嗅探加密密钥等。花时间让您的软件变得更好,而不是试图保护无法保护的东西。

【讨论】:

  • +1;如果您的软件值得盗版,那么无论您的保护如何。如果不是,则无需保护。
  • 我猜你是对的,我会重新考虑这一点。这个想法是通过包装器控制 exe 的启动。但我这看起来像你说的不可能。好吧,我想另一个想法是加密 exe,然后包装器将解密它并在第一次启动时将其写入磁盘。请注意,包装器要从服务器获得批准才能执行此操作。
猜你喜欢
  • 1970-01-01
  • 2022-07-01
  • 2018-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-07
  • 2016-09-19
  • 2010-10-26
相关资源
最近更新 更多