一尘不染

加载EXE文件并从内存中运行

c#

我想在概述运行从内存这样的可执行文章。我可以很容易地运行任何.net
/托管exe。但是我无法运行诸如notepad.exe或的可执行文件calc.exe。如何获取它,以便我也可以运行非托管exe?


阅读 362

收藏
2020-05-19

共1个答案

一尘不染

如果从内存中运行.NET可执行文件,则库和CLR本身会为您带来很多负担。对于诸如notepad.exe和calc.exe之类的本机可执行文件,您必须进行大量手动工作才能使其实现。基本上,您必须像Windows加载程序一样工作。

这里可能有一些警告说明,但是这篇深入的文章提供了将PE
Wikimsdn加载到内存中并执行正确的变基和修复所需的步骤。然后,您应该能够找到入口点(如本文中所述)并运行它。

如果您真的只想运行notepad.exe和calc.exe,那么最简单的方法当然就是在Process.Start磁盘上使用和运行它们。否则,如果您将可执行文件作为资源嵌入到您的进程中,那么下一个最简单的方法就是将内容写到临时位置的磁盘上(请参阅参考资料Path.GetTempFileName),然后从那里执行。

2020-05-19