java - jlink 是否仍然需要混淆(即可以在模块文件上运行反编译器)?

标签 java obfuscation deobfuscation jlink

在 Java 8 中,我需要混淆应用程序的 jar/class 文件。我正在将此应用程序迁移到 Java 10,并且还将更新构建过程以使用模块,这样我们就不必提供完整的 JRE。

当我使用模块编译 (javac),然后构建精简的 JRE (jlink) 时,我注意到 dist/lib/modules 文件是包含我编译的代码的文件。但是,当我检查 dist/lib/modules 时,该文件不是 ZIP 文件,也看起来我的代码不可见。

有没有办法反编译dist/lib/modules?我应该在调用 jlink 之前混淆我的 *.class 文件吗?

这是我的构建流程的示例:

javac -d my_module/out $(find my_module/src -name *.java)
jar cf libs/my_module-1.0.jar -C my_module/out .
javac -d out -p 'libs/my_module-1.0.jar' \
  src/module-info.java src/application/Main.java
jlink -p $JAVA_HOME/jmods:libs --add-modules com.application \
  --launcher start-application=com.application \
  --strip-debug --compress=2 \
  --output small-dist

最佳答案

jlink 不做任何混淆。要提取模块,您可以使用“jimage extract”(请参阅​​ How to extract the file jre-9/lib/modules? )

关于java - jlink 是否仍然需要混淆(即可以在模块文件上运行反编译器)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50217466/

相关文章:

java - 让 OnLongClick 在 ListView Android Studio 中工作

java - 模块化项目中的资源过滤

javascript - 在 JavaScript 中混淆和反混淆字符串的最简单方法

java - 如何使用 Klassmaster 混淆 fatJar

javascript - 如何防止 JavaScript 代码被反混淆

java - 如何让eclipse使用maven下载的包?

java - 带 SSL 的 Jetty HTTP 客户端

javascript - 非常有趣的 JavaScript 混淆。帮助理解它

email - 使电子邮件地址免受网页上机器人的攻击?

java - GWT 2.6.1 + SuperDevMode : stack traces are not deobfuscated on server