gpt4 book ai didi

java - 限制来自 Java 的 native 代码功能

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:05:33 26 4
gpt4 key购买 nike

我有一个 java 应用程序,它在某些部分使用 JNI 来完成一些工作。它遵循通常的 DLL 加载,然后调用 DLL 的本地方法。有什么方法可以限制 native 方法可以从 Java 应用程序做什么?例如,我们是否可以限制 DLL 不打开任何文件或不打开任何套接字,即使它有代码可以这样做?它可以禁止它加载的 DLL 来做某些事情,可能是通过登录某些东西或抛出异常。

最佳答案

不,你不能。 DLL 作为一个整体加载,然后 Java 端无法控制 native 代码正在做什么。

一种解决方案可能是中间人方法。这将涉及编写一个与原始 DLL 具有相同接口(interface)的“外壳”DLL。例如,您通过将“外壳”DLL 放在特定位置并使用 java.library.path 属性来告诉 Java 加载“外壳”DLL。然后“外壳”DLL 的作用是通过将其沙盒化并重定向标准函数来加载“真正的”DLL。这听起来很痛苦,而且这会发生在原生端,而不是 Java。

关于java - 限制来自 Java 的 native 代码功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2057164/

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