У меня есть некоторый двоичный файл, и я подозреваю, что он был создан с помощью 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
, но я не уверен, исходит ли он из моей среды или жестко закодирован. Кроме того, я не могу проверить, жестко ли он закодирован, потому что это двоичный файл. Что делать?