2

Несколько быстрых вещей, как я знаю, такие вопросы часто имеют вредоносную основу.

  • Я не пытаюсь выполнить что-то в формате файла (JPG)
  • Я не пытаюсь просто достичь конечной цели (то есть сделать что-то похожее на jpg, но exectue)
  • Я просто пытаюсь понять разницу между тем, как компьютер анализирует информацию

Поэтому, насколько я понимаю, компьютер, работающий с форматом файла данных, таким как JPG, PDF и т.д., Будет анализировать информацию только в том виде, в котором он представляет собой контейнер, соответствующий моим макетам / спецификациям. Обычно вы слышите разницу между форматом файла данных и исполняемым файлом в том, что компьютер не «запускает (выполняет)» файл данных. У меня вопрос - откуда компьютер знает, что читать и что выполнять? В чем разница? Мой мысленный образ компьютера - это то, что шаг за шагом читает инструкции. Если в середине jpg, который он анализировал, он увидел шелл-код для всплывающего сообщения, почему он не активируется при чтении?

Я знаю, что все может быть выполнено с помощью эксплойтов для программного обеспечения, путем обмана парсера - возможно, через переполнение буфера и т.д. Опять же, не так сильно интересует конечная цель, как этого можно достичь. Меня больше интересует, как компьютер может сказать, что должно быть прочитано, что должно быть выполнено, и как чтение может быть достигнуто без выполнения.

2 ответа2

1

В Windows только расширение делает файл исполняемым - будут выполняться конкретные EXE-файлы, а некоторые другие форматы будут интерпретироваться cmd или PowerShell.

В Unix-подобных системах есть бит выполнения. Если вы знакомы с концепцией файловых атрибутов Windows, то можете рассматривать ее как своего рода атрибут. У любого файла может быть установлен бит выполнения - его можно будет выполнить (как программу, скрипт и т.д.). В противном случае операционная система всегда будет рассматривать его как обычный файл, который не может быть выполнен.

Unix-подобные ОС не используют концепцию расширений файлов, а скорее пытаются идентифицировать файлы по их содержимому. Обычно несколько первых байтов файла составляют магическое число - уникальный идентификатор типа файла (см. Статью в Википедии ).

1

Ну, файлы данных открываются программами. И программы / исполняемые файлы сами открывают эти файлы и интерпретируют данные.

Исполняемые файлы, открываются / запускаются ОС для процессора. Они содержат инструкции, которые являются данными для процессора.

Если файл данных содержит инструкции для ЦП, он обычно не попадает в ЦП, потому что это просто файл, который читает ваша программа, поэтому в большинстве случаев он может содержать инструкции для вашей программы. Но если в программе что-то идет не так, как файл данных вызывает переполнение буфера в программе, то, что в файле данных, я могу предположить, будет отправлено в ЦП.

Можно переименовать файл jpg в exe и выполнить его, и он будет запущен процессором и выдаст ошибку, если в нем действительно нет машинного кода (инструкции процессора), тогда это действительно исполняемый файл с неправильным расширением, и теперь имеет правильное расширение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .