gpt4 book ai didi

java - 如何保护 Java/Javafx 代码不被最终用户看到?

转载 作者:太空宇宙 更新时间:2023-11-04 09:55:00 26 4
gpt4 key购买 nike

我一个人在一家公司做一个项目已经两年多了。该项目是一个非常大的项目,使用 rxtx 与硬件设备进行通信。我使用 Java 8 和 JAVAFX 作为 UI。现在它几乎完成了,我开始搜索如何交付公司将分发给其客户的最终用户应用程序。

问题是,我正在合作的公司希望当软件在最终客户手中时代码无法访问,因为 Java 代码包含一些极其敏感的信息,如果最终客户碰巧知道这些信息,可能会给公司带来非常糟糕的后果。客户实际上可以执行他们无权执行的操作。

因此,经过(大量)搜索并相对于我的案例进行思考后,我明白对 JAR 进行混淆并不是解决方案。然后,我尝试生成一个 JAR,然后将其转换为 EXE,但我成功的只是将 JAR 包装到 EXE 中,这并不妨碍提取 JAR,然后轻松查看所有代码。最后,我发现我应该使用 AoT 编译(如 GCJ 编译器)从我的 Java 代码生成 native 二进制 exe,但在这里我陷入了困境,因为在观看视频和阅读文章等之后,我没有找到一种清晰的方法来生成 native 二进制 exe。

我现在很困惑,因为我不知道我是否走在正确的道路和良好的方向上,或者我是否完全错误,并且有另一种方法可以保护代码(至少免受非专业黑客的攻击,我知道不可能使其 100% 安全,但我只是在寻找一种合理且好的方法)。我应该如何管理工作的最后一步?

最佳答案

我目前在一家公司工作,为了客户的安全以及(不太重要的)法律原因,我们不希望任何人访问该公司的代码。 ;-)

您可以考虑的一种可能的解决方案是将您认为最敏感的代码重写到 C/C++ 库中。可以将其编译为相应操作系统的 .so/.dll/.dylib 文件,这将使其变得困难,不是完全不可能,而是难以反编译。

麻烦来自于学习如何从 Java 访问 native 代码,因为许多文档没有帮助或者根本不存在。这将利用 Java native 接口(interface) (JNI),它允许 Java 与 native (编译的 C/C++)代码进行交互。这使得创建一个 Jar 文件成为可能,该文件将有效地成为一个 Java 库,供您在项目的其余部分中访问。然而, native 代码仍然需要在运行时加载,但这是学习 JNI 如何工作的一部分。我发现 JNI 的一个有用链接是 http://jnicookbook.owsiak.org/ (只要它仍然是一个功能链接)。

我工作的一个客户有一个用 Java 编写的项目,需要实现我们的代码,不幸的是,这些代码都是用 C 编写的。因此,我们需要一种从 Java 访问此 C/C++ 代码的方法。这就是我们解决这个问题的方法,而无需用 Java 重写代码。但我们的好处是(?)已经用 C 编写了代码。

这种在最后一刻用我可能熟悉或不熟悉的另一种语言编写一堆额外代码的解决方案听起来并不是特别有趣。

我很想知道其他人使用此解决方案可能会遇到哪些问题。

关于java - 如何保护 Java/Javafx 代码不被最终用户看到?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54260900/

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