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

时间:2019-01-18 20:20:31

标签: java security javafx executable confidentiality

我为一家公司从事一个项目已经超过两年了。该项目是一个非常大的项目,使用rxtx与硬件设备进行通信。我将Java 8和JAVAFX用于UI。现在已经快完成了,我开始研究如何交付公司将在其客户中分发的最终用户应用程序。

问题是与我合作的公司希望在软件介于最终客户之间时无法访问代码,因为Java代码包含一些极其敏感的信息,如果最终客户发生,这些信息可能会对公司造成非常严重的后果认识他们。客户可以从字面上执行他们无权执行的操作。

因此,经过大量研究并针对我的情况进行思考后,我了解到混淆了JAR并不是解决方案。然后,我尝试生成JAR,然后将其转换为EXE,但我成功完成的工作就是将JAR包装到EXE中,这不会阻止提取JAR,然后轻松查看所有代码。最后,我发现我应该使用AoT编译(如GCJ编译器)从Java代码生成本地二进制exe,但是在这里我被困住了,因为在观看视频和阅读文章等之后,我没有设法找到一种清晰的方法来生成本地二进制文件可执行程序。

我现在很困惑,因为我不知道我是在正确的道路上,还是在正确的方向上,或者我是完全错误的,还有另一种保护代码的方法(至少对于非专业的黑客而言,我知道这是可以理解的)无法使其100%安全,但我只是在寻找一种合理且好的方法)。我应该如何管理工作的最后一步?

1 个答案:

答案 0 :(得分:0)

我目前在一家公司工作,该公司的代码我们不希望任何人出于客户安全的考虑,并且出于法律原因,这并不重要。 ;-)

您可能会想到的一种解决方案是将您认为最敏感的代码重写到C / C ++库中。对于各个操作系统,可以将其编译成.so / .dll / .dylib文件,这将使它变得困难,并非完全不可能,但也很难反编译。

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

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

这种在最后一刻用我可能不熟悉的另一种语言编写大量代码的解决方案听起来并不有趣。

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

相关问题