代码之家  ›  专栏  ›  技术社区  ›  Kevin Boyd

黑客校对JAR文件

  •  4
  • Kevin Boyd  · 技术社区  · 15 年前

    我可以使用什么技术来证明我的“jar”文件是反向工程?

    7 回复  |  直到 15 年前
        1
  •  2
  •   Thorbjørn Ravn Andersen    15 年前

    你在找一个“模糊者”(如果你想运送罐子)。许多存在:

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

    您应该知道,许多混淆技术会删除您可能希望保留的用于故障排除目的的信息—想想不可恢复情况下堆栈跟踪的值—或者实际的调试会话。不管你做什么,你的质量测试都应该在要装运的罐子上进行,因为模糊器可能会引入细微的错误。

    如果您真的想隐藏一些东西,可以考虑使用gcj编译为本机二进制文件。

        2
  •  21
  •   sepp2k    15 年前

    你不能让它成为反向工程的证据。如果Java运行时可以读取指令,那么用户也可以读取指令。

    有一些模糊器会使反汇编代码的可读性/可理解性降低,从而使逆向工程变得更难,但你不能使之成为不可能。

        3
  •  11
  •   Brian Kelly    15 年前

    不要释放它。

        4
  •  6
  •   Kyle Rosendo    15 年前

    没有黑客证据。对不起的。

    编辑评论:

    不幸的事实是,不管你在路上设置了什么路障,如果诚实的人想进去,他们都会进去的。仅仅因为如果它们足够持久,它们将从程序集级别查看您的代码。这在地球上是不可能的。

    您可以看到的是混淆代码、打包jar以及将所有外部包合并为单个包,从而使生活更加困难。然而,无论障碍有多高,我在上一段中的评论仍然适用。

        5
  •  3
  •   Dan Esparza    15 年前

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

    1. 尝试确定什么用户上下文 将实际执行代码 这将访问.jar。锁 向下访问jar为只读 仅从该用户访问。你是如何做到这一点的 将取决于您是否使用来自 一个Web应用程序或一个desktop.exe,它还将 取决于您运行的操作系统 下。
    2. 如果可能的话——在罐子上签名 验证来自的签名 可执行代码。这至少会 告诉你.jar 被篡改。然后你就可以 停止执行应用程序的某些逻辑 使用.jar(并记录和显示错误)。 见 jarsigner docs 更多信息。
        6
  •  3
  •   PaulMcG    15 年前

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

        7
  •  1
  •   TrueWill    15 年前

    一定要避免在代码中放置任何敏感数据。例如:

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

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

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

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