创建一个“虚拟”文件并执行它

时间:2010-01-28 20:23:23

标签: winapi extract virtual-file

我的谷歌搜索引导我到这里:How to create a virtual file? 在那篇文章中,人们建议作者将文件解压缩到临时目录并从那里开始使用。

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

我想做的概念:

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

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

2 个答案:

答案 0 :(得分:4)

你应该使用boxedapp packer。它必须有所帮助。

答案 1 :(得分:1)

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

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

无论你做什么,人们仍然可以绕过它,所以对我来说似乎是浪费时间。有史以来每场EA比赛都被破解了;人们会认为你的产品是有用的,物有所值,或者他们不会。我认为实现比非常简单的注册密钥检查更复杂的方案是值得花时间或精力的(只是为了使它看起来像你做了一些事情)。