<<Я тут подумал, что любая программа и любой файл - есть последовательность нулей и единиц. А значит, это есть число>>
Чем отличются друг от друга файлы с точки зрения Операционных Систем и почему исходный посыл неверен
=============================================
Исполняемый файл, также называемый исполняемым файлом или двоичным файлом, представляет собой готовую к запуску (т. е. Исполняемую) форму программы.
Программа - это последовательность инструкций, понятная ЦП (центральному процессору) компьютера, которая указывает, какие операции компьютер должен выполнять с набором данных.
============================================
Файл - это именованный набор связанных данных, который отображается пользователю как единый непрерывный блок данных и сохраняется в хранилище. Хранилище относится к компьютерным устройствам или носителям, которые могут хранить данные в течение относительно длительных периодов времени (например, годы или десятилетия), например, дисковые накопители и магнитные ленты. Это контрастирует с памятью, которая сохраняет свое содержимое лишь на короткое время и которая физически состоит из микросхем RAM (оперативной памяти).
===========================================
Исполняемые файлы состоят из инструкций, которые были переведены из исходного исходного кода в машинный код, также называемый машинным языком или объектным кодом, с помощью специальной программы, называемой компилятором, чтобы ЦП мог использовать их напрямую и без дальнейшего преобразования. Машинный код полностью состоит из нулей и единиц, которые представляют выключенные и включенные состояния логических схем ЦП и ячеек памяти.
==========================================
Файлы объектного кода и любые другие необходимые файлы (например, файлы библиотеки) затем связываются вместе с помощью компоновщика для создания исполняемого файла. Компоновщики обычно включаются в компиляторы, и связывание выполняется автоматически.
Исполняемые файлы обычно хранятся в одном из нескольких стандартных каталогов на жестком диске (HDD) в Unix-подобных операционных системах, включая / bin, /sbin, /usr/bin, /usr/sbin и /usr/local/bin. Хотя для их работы необязательно, чтобы они находились в этих местах, это часто более удобно. Когда программа запускается, ее исполняемый файл копируется в память операционной системой, так что ее машинный код будет немедленно доступен для ЦП.
В операционных системах, в которых тип файла указывается добавлением расширения после его имени, исполняемые файлы обозначаются такими расширениями, как .exe, .com или .bin. Такие расширения обычно не нужны в Unix-подобных операционных системах.
Хотя обычно на ум приходят прикладные программы, когда используется термин «исполняемый файл», этот термин также относится к сценариям, утилитам и даже операционным системам. Сценарий - это небольшая программа, написанная на языке сценариев (т. е. На упрощенном языке программирования). Сценарии хранятся в текстовых файлах, которые должны интерпретироваться (т. е. На лету преобразовываться в машинный язык) оболочкой (программой, которая предоставляет традиционный текстовый пользовательский интерфейс для Unix-подобных операционных систем) или другой программой каждый раз. они выполняются, а не компилируются заранее. Unix-подобные операционные системы широко используют сценарии для управления работой системы.
============================================
vmlinuz - это исполняемый файл ядра Linux. Ядро - это программа, составляющая центральное ядро
операционной системы компьютера. Vmlinuz является не только исполняемым файлом, но и загрузочным. Это означает, что он способен загружать операционную систему в память, чтобы компьютер стал пригодным для использования, а затем можно было запускать другие исполняемые файл
=============================================
Почему Unix-like OSes не так лего поразить как Виндовс
Магические числа / подписи файлов обычно не видны пользователю, но их можно увидеть с помощью шестнадцатеричного редактора или с помощью команды «xxd». Эти байты необходимы для открытия файла. Изменение / повреждение этих байтов сделает файл бесполезным, поскольку большинство инструментов не будут обращаться к этим файлам из-за потенциального повреждения.
GCC compiler отвечает за генерацию magic number. В момент загрузки executable file контролируется соответствие бинарного содержимого изменненого вирусом файла и magic number.