目前我有一个用Java编写的后端系统,用于处理,按摩并将数据转发到外部HSM模块进行加密。当时它被认为足够安全。但是,最近的审计结果也要求所有后端Java类都受到保护。
我读过有关GCJ的内容,它将Java字节代码编译为Native代码。这肯定会使逆向工程变得更难。
经过30多个小时的谷歌搜索&尝试,我甚至无法进行编译。我没能在我的5个servlet和超过数百个其他java类上使用GCJ进行编译。这也意味着,我还没有用tomcat测试它,我不知道这是怎么回事。
以下是我想知道的问题:
1)那里的任何人都有成功用GCJ编译java sevlets并在Tomcat下运行它吗?如果是,是否有任何与编译java servlet直接相关的指南或示例?
2)我是否在保护java类的正确道路上?如果没有,那么更好的方法是什么?
答案 0 :(得分:2)
我读过有关GCJ的内容,它将Java字节代码编译为Native代码。这肯定会使逆向工程变得更加困难。
这是一个错误的假设。如果要混淆Java字节码,请使用ProGuard。
有没有人用GCJ编译java sevlets并在Tomcat下运行它有什么成功?如果是,是否有任何与编译java servlet直接相关的指南或示例?
想想你在这里想做什么。 Tomcat通过导入Jar文件或目录中的类文件来动态加载servlet。 GCJ将Java类编译为可执行文件或本机库文件。 Tomcat将无法在运行时加载这些本机二进制文件。
您可以通过嵌入Jetty并使用GCJ编译它来创建自己的Web服务器,但我怀疑这是您真正想要做的。有大量的字节码混淆工具可以解决这个问题。 ProGuard是Google推荐用于Android开发的产品,并且是免费的。
<强>更新强>
如果您在应用中使用反射,则可以将ProGuard配置为不使用proguard.cnf文件中的以下行重命名/删除某些类。
-keep public class * extends com.package.ClassName
-keepclassmembers class * extends com.package.ClassName
答案 1 :(得分:0)
你可以compile Tomcat Web apps natively with Excelsior JET(注意:我为Excelsior工作)