gpt4 book ai didi

java在字节数组中的exe包装器运行时执行

转载 作者:行者123 更新时间:2023-12-01 11:35:27 25 4
gpt4 key购买 nike

我有这段代码,它将可执行文件复制到字节数组中。

    //winmine.exe
Path path = Paths.get("winmine.exe");
byte[] bin = Files.readAllBytes(path);

我想动态执行数组而不使用文件。举例来说,我需要这样的东西:

    Runtime app = Runtime.getRuntime();
String currentDir = new File(".").getAbsolutePath();
Process p = app.exec_WRAP_BINARY(bin); //Not exixts

其目的是阻止用户访问文件 winmine.exe

更新:我确信这一定是可能的。如果我们认为这是一个执行:首先,它读取一个文件,然后将其完全加载到内存中......我没有看到,因为它无法单独执行此操作。

最佳答案

一般来说,你想要的东西实际上是不可能实现的。系统链接器需要链接二进制文件并在执行之前加载它,并且在大多数(几乎我所知道的每一个,尤其是 Windows/Linux)上,这意味着您将需要文件系统上的一个文件。

当然 - 您始终可以将其写入那里,也许写入临时目录,将其作为文件执行,然后稍后将其删除。

即使您使用纯 C 语言编写,也无法轻松做到这一点。

(警告 - 在 Windows 上,理论上您可以使用 .com 格式的可执行文件来完成此操作。但对该格式的严格限制使其过时。)

在 Linux 上,您还可以尝试找到系统加载程序二进制文件并执行它,通过管道将整个二进制文件传递到其中。这是有效的,因为它起到了一种“二进制解释器”的作用。但我不推荐这种方法。

关于java在字节数组中的exe包装器运行时执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30038665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com