Определите среду и версию двоичного файла - PullRequest
0 голосов
/ 03 июня 2019

У меня есть некоторый двоичный файл, и я подозреваю, что он был создан с помощью 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, и если он это делает - берет ли он его из списка или он жестко закодирован. Мой инструмент использует другие инструменты, поэтому возможно, что один из них использует Java. У меня есть специальный инструмент (давайте назовем его toolX), который отслеживает все файлы, к которым обращались, в то время как toolA работает. Из вывода я узнал, что Java происходит из двоичного файла, о котором я говорил. Я обнаружил, что он использует Java1.6, но я не уверен, исходит ли он из моей среды или жестко закодирован. Кроме того, я не могу проверить, жестко ли он закодирован, потому что это двоичный файл. Что делать?

...