Существует несколько способов, которыми один файл может содержать два разных потока данных, которые не зависят друг от друга и не мешают друг другу. Один из наиболее часто цитируемых примеров этого - то, как можно добавить файл .zip к файлу .jpg и при этом использовать функцию комбинированного файла как файлы обоих типов, в зависимости от того, какое приложение открывает его.,Этот трюк использует преимущества особого способа структурирования файлов jpeg и zip.Файлы этого типа похожи на программу polyglot .
Еще один распространенный метод встраивания несвязанной информации в файл - это стеганография , которая представляет собой сокрытие сообщений в мирских объектах(как файл изображения.)
Вы можете также рассмотреть возможность использования Альтернативного потока данных , хотя в таком случае пакетный файл, вероятно, не будет встроен в image.
После того, как ваш пакетный файл внедрен, любыми средствами, вы должны найти способ запустить пакетный файл вместо - или в дополнение - к какому-либо приложению для просмотра изображений.пользователь настроил.
Можно с уверенностью предположить, что обычный пользователь не ожидает, что файл, оканчивающийся на .jpg (например), откроет окно cmd.exe и начнет выполнять неизвестные инструкции.Windows Explorer, приложение, которое в большинстве случаев решает, какую программу запускать при двойном щелчке по файлу определенного типа, имеет нормальные значения по умолчанию (т. Е. Файл .jpg открывается с помощью приложения для просмотра изображений), хотя их можно изменить (хотя пользователи обычно неНе меняйте эти нормальные значения по умолчанию на безумные настройки, такие как cmd.exe.)
Самый простой способ - написать собственную программу-обработчик и заставить ее стать обработчиком по умолчанию для типов файлов изображений.Я считаю, что все приложения-обработчики должны быть скомпилированными PE-файлами приложений или библиотек (.exe
, .dll
, .scr
и т. Д.), Поэтому другой пакетный файл здесь не будет работать.Ваш пользовательский обработчик должен отменить встраивание, чтобы извлечь встроенный пакетный файл, а затем выполнить его с помощью cmd.exe.
Но если вам уже удалось заменить стандартный обработчик собственным кодом, встроенный пакетный файл будетспорный вопрос, поскольку ваш код уже запущен.
Я должен повторить то, что @ Di-0xide сказал по этому вопросу.Если вы пытаетесь написать законное приложение, и это является частью вашего плана проектирования, то вам нужно вернуться к чертежной доске, потому что ни одно законное приложение не должно когда-либо делать подобные вещи.