我一直在为不同的目的开发一个后端平台,有时客户希望将该产品作为现场软件安装在他们的数据中心。因此,为了防止逆向工程,我使用了混淆工具。
我想知道用GraalVM 技术编译可部署的应用程序是否是防止逆向工程的另一种解决方案。
我知道本地图像不能被分解,所以逆向工程是不可能的。
发布于 2021-01-04 10:58:23
一般来说,任何软件都可以进行逆向工程,因此这是一个权衡和复杂的问题。
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
您可以看到二进制文件中保留了一些信息。
因此,最初运行模糊处理程序,然后构建本机映像可能会很有趣。
但是通常二进制文件可以像任何本机可执行文件一样被分解。
https://stackoverflow.com/questions/65531208
复制相似问题