首页 > 解决方案 > 确定二进制文件的环境和版本

问题描述

我有一些二进制文件,我怀疑是用 Java 创建的。有没有办法找出哪个环境创建了该文件(例如,如果它的 Java 或 gcc)。如果它是用 Java 创建的,我如何确定 Java 的版本。

我知道file命令和我得到的输出是:

ELF 64-bit LSB executable, x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), not stripped

它并没有说太多。所以我使用了ldd命令:

    linux-vdso.so.1 =>  (0x00007ffff7ffe000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ffff7dbf000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007ffff7bba000)
    libutil.so.1 => /lib64/libutil.so.1 (0x00007ffff79b7000)
    librt.so.1 => /lib64/librt.so.1 (0x00007ffff77ae000)
    libuuid.so.1 => /lib64/libuuid.so.1 (0x00007ffff75a8000)
    libm.so.6 => /lib64/libm.so.6 (0x00007ffff732d000)
    libc.so.6 => /lib64/libc.so.6 (0x00007ffff6fb1000)
    /lib64/ld-linux-x86-64.so.2 (0x0000555555554000)

仍然没有告诉我太多。还有其他方法吗?

EDID:我认为我的问题确实遇到了“XY 问题”。我会试着理解这个问题。我正在尝试确定我的工具(让我们称之为toolA)是否使用 Java,如果确实如此 - 它是从 enamorment 中获取它还是硬编码。我的工具使用其他工具,因此其中一个可能使用 Java。我有一个特殊的工具(我们称之为toolX),它在运行时跟踪所有被触摸的文件toolA。从输出中,我发现 Java 来自我所说的二进制文件。我发现它使用了,Java1.6但我不确定它是来自我的环境还是硬编码。另外,我无法检查它是否是硬编码的,因为它是一个二进制文件。该怎么办?

标签: javalinuxldd

解决方案


推荐阅读