我一直在为不同的目的开发一个后端平台,有时客户希望这个产品作为本地软件安装在他们的数据中心。所以为了防止逆向工程,我使用了模糊处理工具。我想知道使用graalvm原生映像技术编译可部署应用程序是否是防止逆向工程的替代解决方案。我知道本机映像无法反编译,所以反向工程是不可能的。
dgjrabp21#
一般来说,任何软件都可以进行反向工程,所以这样做是一个权衡和复杂性的问题。graalvm native image确实会生成本机可执行文件或共享库,而且对逻辑进行反向工程的工作量要比普通jar文件高。然而,人们需要时刻小心他们的目标和潜在的威胁向量。例如,本机映像构建过程可以将字符串保存在二进制文件中。例如,我有一个本机图像构建二进制文件 primes-serial . 运行类似于:
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
您可以看到一些信息保存在二进制文件中。因此,一开始运行模糊器,然后构建本机映像可能会很有趣。但一般来说,二进制文件可以像任何本机可执行文件一样进行反汇编。
1条答案
按热度按时间dgjrabp21#
一般来说,任何软件都可以进行反向工程,所以这样做是一个权衡和复杂性的问题。
graalvm native image确实会生成本机可执行文件或共享库,而且对逻辑进行反向工程的工作量要比普通jar文件高。
然而,人们需要时刻小心他们的目标和潜在的威胁向量。例如,本机映像构建过程可以将字符串保存在二进制文件中。例如,我有一个本机图像构建二进制文件
primes-serial
. 运行类似于:您可以看到一些信息保存在二进制文件中。
因此,一开始运行模糊器,然后构建本机映像可能会很有趣。
但一般来说,二进制文件可以像任何本机可执行文件一样进行反汇编。