gpt4 book ai didi

Java - 如何利用动态 jar 加载?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:15:27 24 4
gpt4 key购买 nike

我正在开发一个分析 JAR 文件的闭源 Java 应用程序。由于 java 可以很容易地反编译,而且混淆真的没什么大不了的,我想提供一个在线服务,该服务将在我的服务器上执行该应用程序,并且返回它的结果很像这里的 fernflower:www.reversed-java.com/fernflower/。

问题是,我担心这会导致我的应用加载任何潜在的灾难服务器上的有害 jar ,即使我从不运行 jar 。我所做的就是使用 URLClassLoader 加载它们和 JarInputStream .

我正在加载的 jar 可以覆盖我原始应用程序中的类以执行恶意代码吗?或者搞乱我的程序?

动态加载jar有什么风险?

最佳答案

What are the risks in dynamically loading jars?

本身 没有动态加载的风险。风险实际上是运行不受信任代码的风险。如果您在没有采取适当的预防措施的情况下这样做,您的机器就有可能完全受损。

如果你打算做这种事情,至少你应该在沙箱中运行不受信任的代码,以阻止它做任何可能有害的事情。例如,您需要阻止读写本地文件、运行外部进程、使用反射、访问系统属性等。您可能希望阻止它创建线程、创建套接字和其他消耗系统资源的事情。

最后,你需要考虑一些不受信任的 JAR 有一个无限循环的方法的情况。这是使用安全沙箱无法解决的问题。事实上,摆脱循环线程的唯一安全方法是退出 JVM 并重新启动它。

Can a jar im loading override classes in my original app in order to execute malicious code, or mess up my program?

我不认为它可以轻易地覆盖您的类,但不受信任的代码还有许多其他方式可以“搞乱”您的世界;往上看。 (如果不受信任的代码可以执行反射代码,那么它可能通过乱用类加载器的私有(private)数据结构来覆盖您的类。)

关于Java - 如何利用动态 jar 加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8307167/

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