创建“虚拟”网络文件并执行
我的谷歌搜索将我带到这里:如何创建虚拟文件? 在那篇文章中,人们建议作者将文件提取到临时目录并从那里使用它。
实际上,我想做的与作者最初要求的类似 - 创建一个“虚拟”文件并为其分配一个“路径”,这样调用标准 Windows 文件系统 API 的其他应用程序就可以理解。这样做的目的是防止复制和未经授权的使用。
我想做的一个概念:
在我们公司,我们开发了一个程序 - 但它不是标准的 EXE 应用程序,它具有内部格式(假设“应用程序”格式的扩展名是 .MDL)并由运行时环境,因此运行时必须安装在客户端计算机上。这个概念和Java类似(虽然这不是java;只是比较,以便大家更好理解)。我现在想做的是加密这个 .MDL 文件并将其作为资源包含在常规 .exe 文件中。该 .exe 文件将检查是否可以运行(检查许可证条件、密钥、授权等...),然后,如果经过身份验证,则解密并提取 .MDL 文件,执行运行时并传递 .MDL 的虚拟路径文件作为运行时的参数。 出于明显的原因,我不想将解密的 .mdl 文件写入磁盘上的某个位置,因为有人可以启动应用程序,等待解密器将 .MDL 写入临时文件,从临时文件中复制它并分发它。
那么,知道如何做到这一点吗? PS:我从 EA Games 的游戏中得到了灵感……当你运行它们并查看进程表时,你会看到一个常规游戏的 exe,并且在一定时间后,它会生成一个名为 ~A003 的新进程。 tmp
My google search has led me to here: How to create a virtual file?
In that article, people suggested the author to extract the file to a temp directory and work with it from there.
Actually, what I would like to do, is something similar to what the author was originally asking - create a "virtual" file and assign a "path" to it, such that would be understandable by other applications calling standard windows filesystem API. The purpose of this is to prevent copying and unauthorized use.
A concept of what I would like to do:
In our company, we have developed a program - but it's not a standard EXE application, it has an internal format (let's assume the 'application' format's extension is .MDL) and is executed by runtime environment, so the runtime must be installed on the client machine. This concept is similar to Java (although this is not java; just comparing, so that you can better understand). What I want to do now, is to encrypt this .MDL file and include it as a resource in a regular .exe file. This .exe file would check if it's okey to run (check license conditions, keys, authorization etc...) and then, if authenticated, decrypt and extract the .MDL file, exec the runtime and pass the virtual path of the .MDL file as an argument to the runtime.
For obvious reasons, i don't want to write the decrypted .mdl file somewhere on the disk, because somebody could just start the application, wait for the decrypter to write .MDL to temp, copy it from the temp and distribute it.
So, any idea how to do this?
PS: I've got inspired from EA Games' games... when you run them and look into your process table, you see a regular game's exe, and, after certain time, it spawns a new process with name like ~A003.tmp
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您应该使用 boxedapp 打包程序。它一定有帮助。
You should use boxedapp packer. It must help.
我不知道有什么方法可以在不使用某种驱动程序组件的情况下将虚拟文件与路径关联;那是艰苦的工作。
为什么你没有运行时来解密?这样您就不必担心解密磁盘上的文件。或者,您可以创建一个未命名的可继承节对象,用于解密该项目并将句柄值作为命令行参数传递给运行时。
无论你做什么,人们仍然能够绕过它,所以对我来说这似乎是浪费时间。 EA 制作的每一款游戏都已被破解;人们要么认为你的产品有用、物有所值,要么认为不值钱。我认为不值得花时间或精力来实现比非常简单的注册密钥检查更复杂的方案(只是为了让它看起来像你做了某事)。
I am not aware of any method to have a virtual file associated with a path without using some kind of driver component; that is hard work.
Why don't you have the runtime do the decryption? Then you don't have to worry about decrypting the file on disk. Or you could create an unnamed inheritable section object to which to decrypt the item and pass the handle value to the runtime as a command line parameter.
Whatever you do, people will still be able to bypass it so it seems like a waste of time to me. Every EA game ever made has been cracked; people will either think your product is useful and worth the money or they won't. I don't think it is worth the time or effort to implement schemes more complicated than a very simple registration key check (just to make it look like you did something).