【问题标题】:Create a "virtual" file and execute it创建一个“虚拟”文件并执行它
【发布时间】:2010-01-28 20:23:22
【问题描述】:

我的谷歌搜索把我带到了这里:How to create a virtual file? 在那篇文章中,人们建议作者将文件提取到临时目录并从那里使用它。

实际上,我想做的事情类似于作者最初的要求 - 创建一个“虚拟”文件并为其分配一个“路径”,这样其他调用标准 Windows 文件系统的应用程序就可以理解API。这样做的目的是防止复制和未经授权的使用。

我想做什么的概念:

在我们公司,我们开发了一个程序 - 但它不是标准的 EXE 应用程序,它有一个内部格式(假设“应用程序”格式的扩展名是 .MDL)并由运行时环境执行,所以运行时必须安装在客户端机器上。这个概念类似于Java(虽然这不是java;只是比较一下,以便您更好地理解)。我现在要做的是加密这个 .MDL 文件并将其作为资源包含在常规 .exe 文件中。这个 .exe 文件将检查它是否可以运行(检查许可证条件、密钥、授权等),然后,如果经过身份验证,解密并提取 .MDL 文件,执行运行时并传递 .MDL 的虚拟路径文件作为运行时的参数。 出于显而易见的原因,我不想将解密的 .mdl 文件写入磁盘上的某个位置,因为有人可以启动应用程序,等待解密器将 .MDL 写入临时文件,然后从临时文件中复制并分发它。

那么,知道如何做到这一点吗? PS:我从 EA Games 的游戏中获得了灵感……当你运行它们并查看你的进程表时,你会看到一个常规游戏的 exe,并且在一定时间后,它会产生一个名为 ~A003 的新进程。时间

【问题讨论】:

  • 您知道这不会阻止任何真正想要破坏您的程序的人,对吧?
  • 是的.. 解决方案是将其写入“内存”,但这并不能真正阻止超级用户找到解密的数据并将其保存在某处。

标签: winapi extract virtual-file


【解决方案1】:

您应该使用 boxedapp 打包程序。一定有帮助。

【讨论】:

    【解决方案2】:

    我不知道有任何方法可以在不使用某种驱动程序组件的情况下将虚拟文件与路径关联;这是一项艰苦的工作。

    为什么不让运行时进行解密?然后您不必担心解密磁盘上的文件。或者,您可以创建一个未命名的可继承部分对象来解密项目并将句柄值作为命令行参数传递给运行时。

    无论你做什么,人们仍然可以绕过它,所以对我来说这似乎是在浪费时间。曾经制作的每一款 EA 游戏都已被破解;人们要么会认为您的产品有用且物有所值,要么不会。我认为不值得花时间或精力来实施比非常简单的注册密钥检查更复杂的方案(只是为了让它看起来像你做了什么)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-16
      • 2021-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多