Если бы кто-то попытался использовать двоичный файл, будет ли разница, если исполняемый файл будет создан конкретным c компилятором и компоновщиком?
В общем, да. Использование бинарных программ обычно зависит от точной структуры памяти и последовательности машинных инструкций в программе. Это будет отличаться, когда для сборки программы используются разные компиляторы - или даже, как Дэвид C. Рэнкин указывает, что один и тот же компилятор с разными параметрами.
Будет ли оба из них создавать один и тот же исполняемый файл, чтобы их можно было использовать одинаково, ИЛИ исполняемый файл был бы другим, и впоследствии эксплуатация была бы другой?
Обычно они разные. Некоторые типы эксплойтов могут работать одинаково для обоих, если вам повезет, но это зависит от того, что именно делает эксплойт. Например, может случиться так, что:
Тот же эксплойт работает для новой сборки без изменений
Те же атаки basi c работают , но адреса должны быть изменены из-за другой схемы памяти
Эксплойт все еще возможен, но требует совершенно других методов
Эксплойт больше невозможно, либо по совпадению, либо из-за преднамеренных контрмер, реализованных этим компилятором (защита стека, рандомизация адресов и т. д. c).
Если они разные, то какие различия, которые я должен учитывать?
Слишком много, чтобы ответить. В общем, вам, возможно, придется начать с нуля анализ поведения программы, созданной вторым компилятором, чтобы определить, можно ли ее использовать, и если да, то как это можно сделать.