微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 GraalVM Native Image 而不是混淆

如何解决使用 GraalVM Native Image 而不是混淆

我一直在开发用于不同目的的后端平台,有时客户希望将此产品作为本地软件安装在他们的数据中心中。 所以为了防止逆向工程,我使用了混淆工具。

我想知道使用 GraalVM Native Image 技术编译可部署的应用程序是否是防止逆向工程的替代解决方案。

我知道原生镜像无法反编译,所以逆向工程是不可能的。

解决方法

一般来说,任何软件都可以进行逆向工程,因此这样做是一个权衡和复杂性的问题。

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

可以看到二进制文件中保留了一些信息。

因此,最初运行混淆器然后构建本机映像可能会很有趣。

但一般来说,二进制文件可以像任何本机可执行文件一样反汇编。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。