Можно ли узнать, какой компилятор использовался для компиляции программы?

StackOverflow https://stackoverflow.com/questions/618491

Вопрос

Учитывая исполняемый файл, скомпилированный из C для работы в Solaris, можно ли определить, какой компилятор использовался для компиляции соответствующего неполного исполняемого файла?

Я ничего не вижу ни при использовании строк, ни при использовании команды файла, и магия, похоже, не содержит ничего конкретного.

Обычно компиляторы оставляют отпечатки пальцев в своих исполняемых выходных файлах?

ваше здоровье,

Это было полезно?

Решение

Если исполняемый файл не раздет, попробуйте/usr/ccs/bin mcs-p, это обычно показывает компилятор, линкер и все используемые файлы заголовков

Другие советы

Да, IDA отлично подходит для этого.Он использует технологию под названием ФЛИРТОВАТЬ.

ПЭИД сделает свое дело.Обычно это работает просто великолепно.Очевидно, что PEID — это инструмент Windows, но это не имеет значения и должно показывать вам компилятор (иногда даже конкретную информацию о версии).

Создавайте небольшие тестовые приложения с помощью каждого компилятора, который вы пытаетесь идентифицировать.Затем посмотрите результаты в шестнадцатеричном редакторе и попытайтесь найти закономерности.Это может оказаться действительно очевидным — например, «Богатые» подписи из компоновщика Microsoft.

Не разобрано:

$ cc -О привет.c

$ файл a.out

а.выход:ELF 32-битный исполняемый файл MSB SPARC32PLUS Версия 1, V8+ Требуется, динамически подключаемый, не удаляемый

$ strings -A A.out | Греп CC

/opt/solarisstudio12.3/prod/bin/cc -O hello.c

$ dwarfdump -i A.out | grep compile_o

DW_AT_SUN_compile_options Xa;O;R=Sun C 5.12 SunOS_sparc Патч 148917-07 18.10.2013;бэкэнд;raw;cd;

Разделено:

$ раздеться

$ файл a.out

а.выход:ELF 32-битный MSB исполняемый файл SPARC32PLUS Версия 1, V8+ Требуется, динамически подключаемый, удаленный

$ strings -A A.out | Греп CC

(никто)

Visual Studio и GCC обычно используют разные процедуры запуска (которые вызывают main).Возможно, это намек.Хотя я не знаю, как другие.Что касается dll, я не могу придумать что-то подобное в голову.

Компиляторы обычно добавляют свою личную «подпись» в виде открытого текста в скомпилированные файлы.Вы можете использовать такой инструмент, как строки, чтобы разобраться в открытом тексте.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top