1
2
你在找一个“模糊者”(如果你想运送罐子)。许多存在: http://java-source.net/open-source/obfuscators 您应该知道,许多混淆技术会删除您可能希望保留的用于故障排除目的的信息—想想不可恢复情况下堆栈跟踪的值—或者实际的调试会话。不管你做什么,你的质量测试都应该在要装运的罐子上进行,因为模糊器可能会引入细微的错误。 如果您真的想隐藏一些东西,可以考虑使用gcj编译为本机二进制文件。 |
2
21
你不能让它成为反向工程的证据。如果Java运行时可以读取指令,那么用户也可以读取指令。 有一些模糊器会使反汇编代码的可读性/可理解性降低,从而使逆向工程变得更难,但你不能使之成为不可能。 |
3
11
不要释放它。 |
4
6
没有黑客证据。对不起的。 编辑评论: 不幸的事实是,不管你在路上设置了什么路障,如果诚实的人想进去,他们都会进去的。仅仅因为如果它们足够持久,它们将从程序集级别查看您的代码。这在地球上是不可能的。 您可以看到的是混淆代码、打包jar以及将所有外部包合并为单个包,从而使生活更加困难。然而,无论障碍有多高,我在上一段中的评论仍然适用。 |
5
3
我认为这更多的是关于强化jar的访问路径,而不是其他任何东西。
|
6
3
我见过一个公司编写自定义类加载器的案例,它可以解密加密的JAR文件。类加载器本身使用了编译后的JNI代码,因此解密密钥和算法在二进制库中相当模糊。 |
7
1
一定要避免在代码中放置任何敏感数据。例如:
一种选择是加密这些(使用行业标准的加密例程;避免滚动自己的加密例程)并将它们放在外部配置文件或数据库中。 正如其他人所说,部署代码中的任何算法都可以进行反向工程。 如果需要,敏感算法可以放在Web服务或其他服务器端代码中。 |