Зачем делают самораспаковывающийся архивный файл
Скриптик как известно штука такая что его не только на сервере, но и из консоли запускать можно, а значит надо предусмотреть работоспособность обоих вариантов.
Для определения консоли используется isset($argv)
Собственно сам код упаковки и распаковки не интересен.
А вот на что я бы хотел обратить внимание %username% так на то как именно организован упаковщик.
Для этого рассказываю про одну функцию и одну константу о которой не знают не только школьники и индусы.
Это функция __compiler_halt и константа __COMPILER_HALT_OFFSET__, обе введены в PHP начиная с 5.1
При парсинге файла если php натыкается на __compiler_halt(); то он завершает парсинг и выставляет в __COMPILER_HALT_OFFSET__ номер байта следующего за точкой с запятой после имени функции
Важно понимать что никаких ?> уже не требуется после этой конструкции
Что же это нам даёт?
А даёт это нам возможность хранить всякую дрянь произвольные данные в нашем php коде
Причём считываются эти данные очень легко: file_get_contents(__FILE__,null,null,__COMPILER_HALT_OFFSET__);
Если это использовать файл получается разбитым на 2 секции — секцию кода и секцию данных
Упаковщик содержит в секции кода код упаковки, а в секции данных код распаковки
Распаковщик же в секции кода содержит себя любимого, а в секции данных — zip архив c данными
Не надоедая дальнейшими разглагольствованиями привожу код:
$packname = getcwd (). '/' . basename ( __FILE__ , '.php' ). '.packed.php' ;
$zip = new ZipArchive ();
$zip -> open ( $packname , ZIPARCHIVE :: CREATE | ZIPARCHIVE :: OVERWRITE );
$iterator = new RecursiveIteratorIterator (new RecursiveDirectoryIterator ( './' ));
$packer = realpath ( __FILE__ );
foreach( $iterator as $key => $value )
$file = realpath ( $key );
if( $file != $packer )
$zip -> addFile ( $file , $key );
>
$zip -> close ();
$data = file_get_contents ( __FILE__ , null , null , __COMPILER_HALT_OFFSET__ );
$zipped = @ file_get_contents ( $packname );
if( $zipped == '' ) die();
file_put_contents ( $packname , $data . $zipped );
__halt_compiler(); $mode = '' ;
if(isset( $argv [ 1 ]))
$mode = $argv [ 1 ];
>
if(isset( $_REQUEST [ 'mode' ]))
$mode = $_REQUEST [ 'mode' ];
>
function extract_archive ()
file_put_contents ( getcwd (). '/' . basename ( __FILE__ ). '.zip' , file_get_contents ( __FILE__ , null , null , __COMPILER_HALT_OFFSET__ ));
>
$file = basename ( __FILE__ );
if(!isset( $argv ))
echo
HEREDOC;
switch( $mode )
case 'extract' :
extract_archive ();
echo "Извлечён\n" ;
break;
case 'unpack' :
extract_archive ();
$zip = new ZipArchive ;
$zip -> open ( getcwd (). '/' . basename ( __FILE__ ). '.zip' );
$zip -> extractTo ( './' );
$zip -> close ();
unlink ( getcwd (). '/' . basename ( __FILE__ ). '.zip' );
unlink ( __FILE__ );
echo "Распакован\n" ;
break;
default:
if(isset( $argv ))
echo Extract me with
php $file extract
Unpack me with
php $file unpack
ну, на сегодя это всё что я хотел сказать, разве что нарушая традиции попрошу попинать ногами за косяки в первом посте на хабре, иначе будет поздно :)
Самораспаковывающийся архив (англ. self-extracting archive , сокращённо «SFX archive») — файл, компьютерная программа, объединяющая в себе архив и исполняемый код для его распаковки. Такие архивы, в отличие от обычных, не требуют отдельной программы для их распаковки (получения исходных файлов, из которых они созданы), если исполняемый код можно выполнить в указанной операционной системе. Это удобно, когда неизвестно, есть ли у пользователя, которому передаётся архив, соответствующая программа распаковки.
Основной способ использования самораспаковывающихся архивов — создание программ для установки ПО без использования систем управления пакетами.
Исполняемый код, присоединённый к архиву, может представлять собой полноценную программу распаковки.
Совместимость
Так как программа для одной платформы часто не может выполняться на других, то и распаковка самораспаковывающегося архива, созданного для одной системы, на других может быть затруднена.
Самораспаковывающиеся архивы в некоторых форматах — например, RAR и ZIP — могут быть распакованы самостоятельной программой распаковки.
Также можно создать код, который будет поддерживаться без дополнительных программ сразу на нескольких операционных системах — например, DOS и OS/2.
Или код, который будет поддерживаться стандартной поставкой одной ОС, и дополнительными средствами в другой — например, с использованием Python или shell (см. выше).
Архив с кодом под Win32 может потребовать дополнительных действий после распаковки с помощью Wine на UNIX-подобной системе — в частности, установки битов прав доступа.
Полезное
мошенничество в России
В России такой тип ПО завоевал популярность у различного рода интернет мошенников. Под видом бесплатного ПО, либо фото и видео информации пользователям предлагалось скачать себе на компьютер самораспаковывающиеся архив, после в процессе открытия файла программа предлагала отослать "СМС" для завершения распаковки и получения нужной информации. Однако даже в случае отправки платного "СМС" пользователь в лучшем случае получал "пустышку" а в ряде случаев за место искомого файла на компьютер попадало вредоносное-вирусное ПО.
Совместимость
Так как программа для одной платформы часто не может выполняться на других, то и распаковка самораспаковывающегося архива, созданного для одной системы, на других может быть затруднена.
Самораспаковывающиеся архивы в некоторых форматах — например, RAR и ZIP — могут быть распакованы самостоятельной программой распаковки.
Также можно создать код, который будет поддерживаться без дополнительных программ сразу на нескольких операционных системах — например, OS/2.
Или код, который будет поддерживаться стандартной поставкой одной ОС, и дополнительными средствами в другой — например, с использованием shell (см. выше).
Архив с кодом под Win32 может потребовать дополнительных действий после распаковки с помощью UNIX-подобной системе — в частности, установки битов прав доступа.
WinRAR
У пользователей эта программа пользуется наибольшим спросом. Для самораспаковывающегося файла выполняются почти такие же действия, только в настройках дополнительно указывается некоторая информация. Интерфейс этой программы обычно на английском языке, но разобраться в нем удастся даже при наличии минимальных знаний. Последовательность действий:
- Правой кнопкой мыши щелкните по файлу или папке, которую нужно заархивировать.
- В открывшемся меню выберите программу, наведите на нее мышку и щелкните по надписи Add to archive.
- В возникшем окне программа предложит указать параметры для активации. В самой первой вкладке (General) поставьте галочку напротив строки Create SFX archive. Тогда в названии файла автоматически поменяется расширение.
- Нажмите внизу подтверждающую кнопку, чтобы началось сжатие файлов. После загрузки на рабочем столе появится архив.
Для самораспаковывающихся файлов устанавливают и дополнительные параметры, если в этом есть необходимость. Достаточно перейти во вторую вкладку, чтобы открыть дополнительные опции. Они появятся после нажатия на кнопку SFX options. В открывшемся окне пользователь указывает место распаковки или меняет иконку, если ее внешний вид не устраивает. Также там есть возможность добавлять лицензионные данные. Это необходимо, если другой человек с помощью архива продает какой-то продукт.
У этого приложения нет бесплатной пробной версии и постоянно всплывающих окон с просьбой о продлении лицензии, как это сделано в предыдущей утилите.
Для создания архива также необходимо кликнуть правой кнопкой мыши по выбранным файлам, а в контекстном меню нажать «Добавить к архиву» и выбрать соответствующую программу. Откроется окно программы, где потребуется указать имя файла и остальные настройки. Весь интерфейс создан на русском языке, поэтому с его помощью создать самораспаковывающийся файл еще проще.
Напротив строки с форматом выберите 7z, а в блоке с дополнительными опциями нажмите на «Создать SFX-архив». Чтобы настройки сработали, сначала обязательно следует указать формат файла. После этого нажмите ОК, так запустится архивация.
Для распаковки файла достаточно 2 раза нажать на него, а в появившемся окне изменить место, где появится файл и тапнуть по кнопке Extract.
Архивы этой программы иногда блокируются антивирусами. Они ошибочно полагают, что там есть вредоносные файлы, даже если на самом деле папка чиста. На Windows 10 встроенный защитник удаляет такие архивы без предупреждения, поэтому пользователям следует его предварительно отключить:
- Нажмите на кнопку с иконкой операционной системы и перейдите в параметры.
- Тапните на раздел с круглой стрелкой, где написано «Обновление и безопасность».
- Во вкладке «Защитник Windows 10» выключите все доступные функции, которые отвечают за защиту устройства.
При установке нескольких антивирусов встроенный защитник моментально блокируется другим, чтобы он не удалил файл, тогда при переходе в настройки все функции будут уже отключены.
См. также
Wikimedia Foundation . 2010 .
Как отличить архивы
У привычных файлов, для открытия которых требуются профильные приложения, стоят расширения .rar или .zip. Самораспаковывающиеся отличаются тем, что у них идет расширение .exe. Чтобы открыть и извлечь информацию, получателю не придется ставить на компьютер архиватор.
Значок запакованных файлов при этом встречается разный. Он меняется в зависимости от используемого приложения и ее версии.
WinZip
Эта программа в основном используется зарубежными гражданами. По популярности она на первом месте в Европе, поэтому ее выпустили еще и с русским интерфейсом. WinZip создает самораспаковывающиеся файлы только в том случае, если уже сделан стандартный архив. В связи с этим меняется принцип использования утилиты:
- По файлу или папке с ними нажмите правой кнопкой мыши.
- Найдите название программы, перейдите по стрелке и выберите «Добавить к архиву».
- В открывшемся меню нажмите на вкладку «Инструменты», она находится на верхней панели.
- Выберите кнопку с синим значком и стрелкой, где написано «Самораспаковывающийся EXE».
- Потребуется предварительно сохранить и запустить файл, чтобы он корректно работал.
- При необходимости укажите другую папку или выберите способ разбивки файлов. Нажмите подтверждающую кнопку в правом верхнем углу окошка.
Создание архива
Порядок действий зависит от используемой программы. Сжатие файлов обычно выполняют с помощью утилиты 7zip, WinZIP или WinRAR. На примере этих программ мы рассмотрим, как там создаются самораспаковывающиеся файлы.
Примеры
Примеры программ, способных создавать самораспаковывающиеся архивы:
- Создание настраиваемых самораспаковывающихся архивов для Microsoft Windows с выбором компрессора (ZLIB, BZIP2, LZMA)
- Русскоязычный интерфейс программы
- Настройка архива производится через графический интерфейс программы
Данная программа создана исключительно для создания многофункциональных SFX архивов / пакетов инсталляторов и обладает широкими возможностями в плане функционала и возможностей создаваемого архива
Также такие архивы в своих форматах для соответствующих платформ могут создавать StuffIt и WinZip.
Существуют также программы, которые создают архивы в виде сценариев оболочки UNIX. Это часто используется для создания программ установки коммерческого ПО для UNIX-подобных ОС. Примеры: makeself и более старая shar.
Как выбрать архиватор
Мы рассмотрели инструкцию по созданию самораспаковывающихся файлов только на 3 программах. Выбирать среди них или другого ПО следует на основе личных предпочтений. Для упрощения задачи рассмотрим их основные особенности:
Поскольку любой SFX-архив не нуждается в предварительной установке подходящего приложения, его считают более удобным вариантом и отличной альтернативой простому сжатию файлов. Создаются самораспаковывающиеся пакеты за несколько минут с помощью любой из предложенных программ.
Одной из серьезных существующих проблем в области развития и распространения информационных технологий является защита авторских прав на такие объекты интеллектуальной собственности как программное обеспечение, аудио-, видео- материалы и любую иную информацию, которая может быть представлена в электронном виде. Собственники такого рода объектов вынуждены прибегать к различным средствам защиты от копирования и несанкционированного распространения, которые зачастую обладают подчас большей стоимостью, чем сами объекты защиты.
Однако в некоторых случаях возникает задача коммерческого распространения цифрового контента, который обладает достаточно низкой стоимостью, и поэтому экономически нецелесообразно использовать дорогостоящие средства защиты. В связи с этой ситуацией на рынке интеллектуальной собственности сравнительно недавно появились доступные (фактически, бесплатные) для любого пользователя, в том числе, не обладающего какими-либо специальными навыками средства защиты контента, позволяющие извлекать прибыль от распространения объектов интеллектуальной собственности. Принцип работы подобных средств основан на создании самораспаковывающегося архива [1] (в дальнейшем СРА) (англ. self-extracting archive, сокращенно «SFX archive»), требующего для извлечения файлов соответствующую оплату и последующий ввод ключевого слова (кода). СРА создается с помощью специальной клиентской программы, использующий особенности формата исполняемых файлов [2] (по сути, стеганографическую вставку данных).
Родоначальником сервиса коммерческих СРА была программа от сервиса ZipCoin, и появилась она в 2009 году. Следующие за ней проекты подхватили идею и начали развивать это направление.
Общая информация о СРА
Функциональная схема сервиса коммерческих самораспаковывающихся архивов
- Клиентская программа.
- Веб-сервис для обслуживание партнеров.
- База данных.
- Платежный сервис.
- Веб-каталог (файловое хранилище).
- предоставлять подробную информацию о правилах, действующих тарифах, особенностях системы
- обеспечивать регистрацию партнеров
- вести статистический учет количества обращений/покупок архивов, их стоимость
- обеспечивать клиентскую программу необходимыми данными для работы с архивами (информацией о партнере, архиве, ключевых словах и т.п.)
- обеспечивать администраторские функции, такие как добавление, редактирование, удаление, блокировку архивов и/или партнеров,
- обеспечивать выплату денежных средств за оплату архивов, учет расчетных операций.
Ниже, на рисунке 1, представлена типовая функциональная схема сервиса коммерческих СРА:
Рис.1 Функциональная схема сервиса коммерческих
- вознаграждение веб-сервиса в размере заявленной комиссии;
- комиссия платежному сервису;
- комиссия платежным системам;
- партнерское вознаграждение за цифровой контент.
Описание подхода к системе защиты цифрового контента в самораспаковывающихся архивах.
Самораспаковывающийся архив – это файл (компьютерная программа), объединяющий в себя архив и исполняемый код для его распаковки. Такие архивы в отличие от обычных не требуют отдельной программы для их распаковки (получения исходных файлов, из которых они созданы), если исполняемый код можно выполнить в указанной операционной системе.
Как правило, коммерческие СРА используют особенности PE формата [5] – формата исполняемых файлов, объектного кода и динамических библиотек, используемого в 32- и 64-битных версиях операционной системы Microsoft Windows, позволяющие встраивать данные в конец файла. Обобщенная структура PE-файла представленная на рисунке 2. Например, формат исполняемого EXE-файла позволяет дописывать абсолютно любые данные в конец файла программы, при этом программа будет работать как и прежде. Фактически, используются возможности компьютерной стеганографии и стеганографическое скрытие данных в формате исполняемого файла [6]. Эти возможности PE формата и используются некоторыми сервисами СРА.
Рис. 2 Обобщенный формат PE-файла
На рисунке 3 представлен возможный вариант компоновки СРА.
Рис. 3. Вариант компоновки СРА
Таким образом, технология работы СРА сводиться к следующим этапам:
1. Запуск программы и ввод учетных данных партнера для доступа с помощью клиентской программы к веб-сервису СРА.
2. Выбор необходимых файлов с указанием их параметров.
3. Упаковка выбранных в файлов в СРА.
3.1. Запись кода исходной программы в целевой файл СРА.
3.2. Запрос к веб-сервису об уникальных параметрах архива (идентификатор архива, ключевое слово).
3.3. Запись в СРА маркера начала заголовка встроенных данных после кода исходной программы.
3.4. Формирование и запись заголовка встроенных данных,.
3.5. Архивация цифрового контента.
3.6. Шифрование цифрового контента.
3.7. Запись полученных данных в целевой файл.
Смотреть что такое "SFX-архив" в других словарях:
SFX — См. SFX (значения) Самораспаковывающийся архив (англ. self extracting archive, сокращённо «SFX archive») файл, компьютерная программа, объединяющая в себе архив и исполняемый код для его распаковки. Такие архивы, в отличие от обычных, не требуют … Википедия
Архив (информатика) — У этого термина существуют и другие значения, см. Архив (значения). В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнен … Википедия
SFX (значения) — англ. SFX (/ɛs ɛf ɛks/) может означать: Спецэффекты (англ. Special effects /ˈspeʃəl ɪˈfɛkts/) Звуковые эффекты (например, семплы (англ. sample /ˈsɑ:mpl/)) (англ. sound effects /saʊnd ɪˈfɛkts/) Самораспаковывающийся архив (англ … Википедия
Sfx — англ. SFX (/ɛs ɛf ɛks/) может означать: Спецэффекты (англ. Special effects /ˈspeʃəl ɪˈfɛkts/) Звуковые эффекты (например, семплы (англ. sample /ˈsɑ:mpl/)) (англ. sound effects /saʊnd ɪˈfɛkts/) Самораспаковывающийся архив (англ. self extracting… … Википедия
Самораспаковывающийся архив — Запрос «SFX» перенаправляется сюда; см. также другие значения. Самораспаковывающийся или самоизвлекающийся архив (англ. self extracting archive, сокращённо «SFX archive») файл, компьютерная программа, объединяющая в себе архив и… … Википедия
Список аббревиатур — Это служебный список статей, созданный для координации работ по развитию темы. Данное предупреждение не устанавливается на информационные списки и глоссарии … Википедия
Утраченные эпизоды телесериала «Доктор Кто» — Коллекция книг, DVD и CD дисков, закадровых фотографий и отдельных кадров недостающих эпизодов «Доктора Кто», которые, несмотря на отсутствие в архивах BBC, были реконструированы и частично восстановлены из р … Википедия
Список расширений имени файла/S — / * A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Примечание: Поскольку расширение имени файла может быть любым, представленный список не является полным … Википедия
WinRAR — Проверить информацию. Необходимо проверить точность фактов и достоверность сведений, изложенных в этой статье. На странице обсуждения должны быть пояснения … Википедия
Your Sinclair — Специализация: ZX Spectrum Периодичность: ежемесячник Сокращённое название: YS Язык: английский Издатель: Dennis Publishing Future Publishing Стран … Википедия
Самораспаковывающийся или самоизвлекающийся архив (англ. self-extracting archive , сокращённо «SFX archive») — файл, компьютерная программа, объединяющая в себе архив и исполняемый код для его распаковки. Такие архивы, в отличие от обычных, не требуют отдельной программы для их распаковки (получения исходных файлов, из которых они созданы), если исполняемый код можно выполнить в указанной операционной системе. Это удобно, когда неизвестно, есть ли у пользователя, которому передаётся архив, соответствующая программа распаковки.
Основной способ использования самораспаковывающихся архивов — создание программ для установки ПО без использования систем управления пакетами.
Исполняемый код, присоединённый к архиву, может представлять собой полноценную программу распаковки. Так как существует вероятность выполнения кода распаковщика, самораспаковывающийся архив или замаскированный под него файл может использоваться для распространения вредоносного ПО.
Смотреть что такое "Самораспаковывающийся архив" в других словарях:
SFX-архив — См. SFX (значения) Самораспаковывающийся архив (англ. self extracting archive, сокращённо «SFX archive») файл, компьютерная программа, объединяющая в себе архив и исполняемый код для его распаковки. Такие архивы, в отличие от обычных, не требуют … Википедия
Многотомный архив — Многотомный архив архив компьютерных программ и данных, разбитый на несколько частей (томов). В утилитах сжатия с возможностью задания объёма томов есть много преимуществ. Во первых, такое позволяет человеку скачать файл по частям в удобное … Википедия
Непрерывный архив — (англ. solid archive) архив, упакованный таким образом, что все сжимаемые файлы рассматриваются как один непрерывный поток данных. При упаковке каждого файла (кроме первого) используется информация, содержащаяся в предыдущих файлах. К… … Википедия
Патч — В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена. Вы можете отредактиро … Википедия
Патч (программный) — Заплатка, или патч (англ. patch /pætʃ/ заплатка) автоматизированное отдельно поставляемое программное средство, используемое для устранения проблем в программном обеспечении или изменения его функционала, а также сам процесс установки патча (… … Википедия
SFX — См. SFX (значения) Самораспаковывающийся архив (англ. self extracting archive, сокращённо «SFX archive») файл, компьютерная программа, объединяющая в себе архив и исполняемый код для его распаковки. Такие архивы, в отличие от обычных, не требуют … Википедия
Классификация параллельных вычислительных систем — Содержание 1 Классификация параллельных архитектур по Флинну 2 Суперскалярные и VLIW машины … Википедия
SFX (значения) — англ. SFX (/ɛs ɛf ɛks/) может означать: Спецэффекты (англ. Special effects /ˈspeʃəl ɪˈfɛkts/) Звуковые эффекты (например, семплы (англ. sample /ˈsɑ:mpl/)) (англ. sound effects /saʊnd ɪˈfɛkts/) Самораспаковывающийся архив (англ … Википедия
WATIR — (англ. Web Application Testing in Ruby) бесплатная библиотека для интерпретатора Ruby с открытым кодом, позволяющая тестировать веб приложения. Библиотека WATIR понимает структуру веб страниц и позволяет получить доступ к ее элементам … Википедия
Sfx — англ. SFX (/ɛs ɛf ɛks/) может означать: Спецэффекты (англ. Special effects /ˈspeʃəl ɪˈfɛkts/) Звуковые эффекты (например, семплы (англ. sample /ˈsɑ:mpl/)) (англ. sound effects /saʊnd ɪˈfɛkts/) Самораспаковывающийся архив (англ. self extracting… … Википедия
Самораспаковывающиеся архивы используются для передачи файлов. С помощью этого способа информацией обмениваются через любое облако, интернет или физический накопитель. Архив запаковывает файлы при помощи сжатия. Думать о том, есть ли у получателя специальная программа, не придется, поскольку распаковка выполняется без этого.
Примеры
Примеры программ, способных создавать самораспаковывающиеся архивы:
- 7zCon.sfx — ненастраиваемый, для указанной пользователем платформы; поддерживает просмотр, автоматическую перезапись файлов, проверку целостности и зашифрованный архив.
- Возможно создание настраиваемых самораспаковывающихся RAR (и ZIP в WinRAR) архивов с русским и английским интерфейсом. Настройка архива производится путем задания комментария. Возможно изменение значка.
Также такие архивы в своих форматах для соответствующих платформ могут создавать StuffIt и сценариев оболочки UNIX. Это часто используется для создания программ установки коммерческого ПО для UNIX-подобных ОС. Примеры: makeself и более старая shar.
Полезное
Содержание
См. также
Wikimedia Foundation . 2010 .
Читайте также: