黑客打样jar文件

时间:2009-09-05 15:09:51

标签: java reverse-engineering

我可以使用哪些技术制作“jar”文件反向工程师证明?

7 个答案:

答案 0 :(得分:21)

你无法进行逆向工程证明。如果java运行时可以读取指令,那么用户也可以。

有些混淆器会使反汇编代码的可读性/可理解性降低,使逆向工程变得更难,但是你无法让它变得不可能。

答案 1 :(得分:11)

不要释放它。

答案 2 :(得分:6)

没有黑客证明这样的东西。遗憾。

编辑评论:

不幸的事实是,无论你设置什么障碍,如果真的想要,他们就会进入。仅仅因为如果他们足够坚持他们就会从大会层面看你的代码。你不能在地球上做到这一点。

你可以看到的是混淆代码,打包jar并将所有外部包合并为一个以使生活变得更加艰难。然而,无论障碍有多高,我在前一段中的评论仍然适用。

答案 3 :(得分:3)

我认为这更多的是强化jar的访问路径,而不是其他任何东西。

  1. 尝试确定用户上下文 实际上将执行代码 这将访问.jar。锁 向下访问jar只读 仅从该用户访问。你是怎么做到的 将取决于你是否使用罐子 一个Web应用程序或桌面.exe,它也将 取决于您正在运行的操作系统 下。
  2. 如果可能的话 - 在罐子上签名 验证来自的签名 可执行代码。这至少会 告诉你.jar是否已经存在 篡改。你可以拥有 一些停止执行应用程序的逻辑 从使用.jar(并记录并显示错误)。 有关详细信息,请参阅jarsigner docs

答案 4 :(得分:3)

我见过一个公司编写自定义类加载器的案例,它可以解密加密的jar文件。类加载器本身使用编译的JNI代码,因此解密密钥和算法在二进制库中相当深入。

答案 5 :(得分:2)

您正在寻找“混淆器”(如果您想运送罐子)。许多存在:

http://java-source.net/open-source/obfuscators

您应该知道,许多混淆技术会删除您可能希望保留的信息以进行故障排除 - 从不可重现的情况 - 或实际调试会话中考虑堆栈跟踪的值。无论你做什么,你的质量测试都应该在罐子上进行,因为混淆器可能会引入微妙的错误。

如果您真的想隐藏内容,请考虑使用gcj编译为本机二进制文件。

答案 6 :(得分:1)

绝对避免在代码中放置任何敏感数据。例如:

  • 密码
  • 数据库连接字符串

一种选择是加密这些(使用行业标准加密例程;避免自己滚动)并将它们放在外部配置文件或数据库中。

正如其他人所说,部署代码中的任何算法都可以进行逆向工程。

如果需要,可以将敏感算法放在Web服务或其他服务器端代码中。