Ответ 1
Если исполняемый файл не удаляется, попробуйте /usr/ccs/bin mcs-p Обычно это показывает компилятор, компоновщик и все используемые файлы заголовков.
Учитывая исполняемый файл, который скомпилирован из C для запуска в Solaris, можно ли определить, какой компилятор использовался для компиляции связанного неполного исполняемого файла?
Я ничего не вижу при использовании строк или команды файла, а магия, похоже, не содержит ничего конкретного.
Компилируют ли обычно отпечатки пальцев в своих исполняемых выходных файлах?
веселит,
Если исполняемый файл не удаляется, попробуйте /usr/ccs/bin mcs-p Обычно это показывает компилятор, компоновщик и все используемые файлы заголовков.
Да, IDA отлично подходит для этого. Он использует технологию под названием FLIRT.
PEID сделает трюк. Он вообще работает просто отлично. Очевидно, PEID - это инструмент Windows, но это не имеет значения и должно показать вам компилятор (иногда даже конкретную информацию о версии).
Создавайте небольшие тестовые приложения с каждым компилятором, который вы пытаетесь идентифицировать. Затем просмотрите результаты в шестнадцатеричном редакторе и попробуйте найти шаблоны. Это может оказаться действительно очевидным - например, "Rich" подписи от Microsoft linker.
Не раздевается:
$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
(нет)
Visual Studio и GCC обычно следуют различным процедурам запуска (которые вызывают main). Это может быть намек. Однако я не знаю о других. Для dlls, я не могу думать о чем-то подобном с верхней части головы.
Компиляторы обычно добавляют свою собственную "подпись" в виде открытого текста в скомпилированных файлах. Вы можете использовать такой инструмент, как строки, чтобы отключить открытый текст.