【发布时间】:2011-11-04 11:35:49
【问题描述】:
我正在开发一种复制保护软件,并且正在尝试围绕任何类型的可执行文件(托管和非托管)创建一个包装器。然后,此包装器将尝试执行包装后的可执行文件,而不像往常一样将其写入磁盘,并使用Process.Start() 执行它。
我使用 .Net 4.0 Assembly 和 Appdomain 来让它工作,但我已经阅读和测试过,它只适用于 .Net 可执行文件。我将如何四处执行任何类型的可执行文件而不将其“裸”写入驱动器?
例如,我可以从加密的压缩文件中执行它吗? 还是 MemoryMappedFile?
【问题讨论】:
-
AFAIK 正常的可执行文件在执行前不会写入磁盘。我不知道.Net。无论如何,所有可执行文件都需要以机器代码(这意味着未加密和未压缩)在 RAM 中才能执行。
-
@m0skit0 - .NET 应用程序的工作方式与普通可执行文件类似。
-
我认为您无法使用 Process.Start() 启动它 - 您可以将程序加载到内存中,然后对它的起始地址执行 jmp,但可能有各种各样这样做的可怕安全问题。
-
要执行它们,它们必须要么在磁盘上,要么完全、未压缩和未加密地加载到内存中。我想你可以然后调用入口点,剩下的就交给它了。我认为从 .NET 做这件事有点牵强...