Winapi 创建一个";虚拟的;归档并执行它

Winapi 创建一个";虚拟的;归档并执行它,winapi,extract,virtual-file,Winapi,Extract,Virtual File,我的谷歌搜索将我带到这里: 在那篇文章中,人们建议作者将文件解压缩到一个临时目录,并从那里使用它 实际上,我想做的事情与作者最初的要求类似——创建一个“虚拟”文件并为其分配一个“路径”,这样其他调用标准windows文件系统API的应用程序就可以理解。其目的是防止复制和未经授权的使用 我想做什么的概念: 在我们公司,我们开发了一个程序——但它不是标准的EXE应用程序,它有一个内部格式(假设“应用程序”格式的扩展名是.MDL),并且由运行时环境执行,因此运行时必须安装在客户机上。这个概念类似于Ja

我的谷歌搜索将我带到这里: 在那篇文章中,人们建议作者将文件解压缩到一个临时目录,并从那里使用它

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

我想做什么的概念:

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

那么,你知道怎么做吗?
PS:我从EA Games的游戏中得到了灵感。。。当您运行它们并查看进程表时,您会看到一个常规游戏的exe,经过一定时间后,它会生成一个名为~A003.tmp的新进程。我不知道有任何方法可以在不使用某种驱动程序组件的情况下将虚拟文件与路径相关联;这是一项艰苦的工作

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


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

你应该使用boxedapp packer。这一定会有帮助。

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