代码之家  ›  专栏  ›  技术社区  ›  Bojan Vukasovic

在本机映像之前使用Proguard进行Java模糊处理?

  •  0
  • Bojan Vukasovic  · 技术社区  · 4 年前

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

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

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

    0 回复  |  直到 5 年前
        1
  •  4
  •   Oleg Å elajev    5 年前

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

    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
    

    您可以看到一些信息被保存在二进制文件中。

    因此,最初运行模糊处理程序,然后构建本地映像可能会很有趣。

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

    推荐文章