Подтвердить что ты не робот

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

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

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

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

веселит,

4b9b3361

Ответ 1

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

Ответ 2

Да, IDA отлично подходит для этого. Он использует технологию под названием FLIRT.

Ответ 3

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

Ответ 4

Создавайте небольшие тестовые приложения с каждым компилятором, который вы пытаетесь идентифицировать. Затем просмотрите результаты в шестнадцатеричном редакторе и попробуйте найти шаблоны. Это может оказаться действительно очевидным - например, "Rich" подписи от Microsoft linker.

Ответ 5

Не раздевается:

$cc -O hello.c

$file a.out

a.out: 32-разрядный исполняемый файл ELF MSB SPARC32PLUS Версия 1, V8 + Обязательный, динамически связанный, не разделенный

$strings -a a.out | grep 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 2013/10/18; backend; raw; cd;

Лишенный:

$strip a.out

$file a.out

a.out: 32-разрядный MSF исполняемый MSB SPARC32PLUS Версия 1, V8 + Обязательный, динамически связанный, разделенный

$strings -a a.out | grep cc

(нет)

Ответ 6

Visual Studio и GCC обычно следуют различным процедурам запуска (которые вызывают main). Это может быть намек. Однако я не знаю о других. Для dlls, я не могу думать о чем-то подобном с верхней части головы.

Ответ 7

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