Execute an executable program (.exe) from memory in Java
我想在 Windows 上执行内存中的程序。我不想将文件写入磁盘。我只想传入一个字节数组(这是我要执行的程序)作为参数。
我不够熟练,无法编写本机代码来执行此操作。同样,这应该是 Windows 原生的。
我要在内存中执行的程序不是 Java 程序。它是一个可执行文件(.exe)!可执行文件旨在在内存中读取和运行,而不是通过 Runtime.getRuntime().exec(“example.exe”);
- 几乎不可能,我会说。一些动机?
- 为什么 Runtime.exec() 不合适?
- 我尝试运行的文件肯定会使用防病毒软件标记为误报。
- 这听起来很安全……防病毒软件标记可执行文件是有原因的。他们这样做不是”为了好玩”。
- 作为新手,您想做一些拥有数十年安全经验的专家开发人员非常努力地确保您做不到的事情吗?我建议您尝试关闭防病毒软件或尝试其他方法。你有更好的机会成为美国总统。
我还不能发表评论,否则我会的。您应该能够在这里找到一些有用的信息,人们正在尝试使用 C 解决相同的问题。祈祷告诉你,你是想写一个跨平台的程序,还是只写 Windows 的程序?您对 “.exe” 的使用仅表示 Windows。
从内存缓冲区创建进程
理论上你应该能够通过使用 Windows API 调用来完成这项工作,只要你不尝试跨平台。
- 我只是想为 Windows 做这个。我对 Java 以外的任何其他语言都不是很有经验。
- @Thomas:是的,不会发生。是时候进行下一个更现实的要求了。
来源:https://www.codenong.com/11087612/