一般来说,任何软件都可以进行逆向工程,所以这是一个权衡和复杂性的问题。
GraalVM本机映像确实会生成本机可执行文件或共享库,并且对逻辑进行逆向工程的工作量比使用普通jar文件要高。
然而,人们需要始终小心他们的目标和潜在的威胁载体。例如,本机图像构建过程可以将字符串保存在二进制文件中。例如,我有一个本地映像构建的二进制文件
primes-serial
。运行以下内容:
strings primes-serial | grep com.oracle.svm.core.VM
Ocom.oracle.svm.core.VM
com.oracle.svm.core.VM.Target.Libraries=stdc++|pthread|dl|z|rt
com.oracle.svm.core.VM=GraalVM 20.2.0 Java 11 EE
com.oracle.svm.core.VM.Target.StaticLibraries=liblibchelper.a|libnet.a|libffi.a|libextnet.a|libnio.a|libjava.a|libfdlibm.a|libsunec.a|libzip.a|libjvm.a
com.oracle.svm.core.VM.Target.LibC=com.oracle.svm.core.posix.linux.libc.GLibC
com.oracle.svm.core.VM.Target.Platform=org.graalvm.nativeimage.Platform$LINUX_AMD64
com.oracle.svm.core.VM.Target.CCompiler=gcc|redhat|x86_64|4.8.5
您可以看到一些信息被保存在二进制文件中。
因此,最初运行模糊处理程序,然后构建本地映像可能会很有趣。
但一般来说,二进制文件可以像任何本机可执行文件一样进行反汇编。