OSDev
http://osdev.su/

Контейнер исполняемого кода, основанный на ZIP
http://osdev.su/viewtopic.php?f=18&t=782
Страница 1 из 1

Автор:  sh2ezo [ 13 авг 2013, 19:56 ]
Заголовок сообщения:  Контейнер исполняемого кода, основанный на ZIP

docx и прочие новые форматы офиса основаны на zip, который содержит внутри себя xml и ещё какие-то файлы. Вот я и подумал, почему бы не запихнуть таким же образом в zip исполняемый код.
что хотелось бы:
1. возможность описания как бинарников, так и скриптов(т.е. указывается, например, тип контента, а также среда, в которой должен исполняться код)
2. возможность запихнуть внутрь кучу версий программы для разных систем/сред/процессоров(т.е., например, запихнули туда версию для линя, винды, а также колибри, после чего везде запускаем и везде запускается, но нет никаких dotNet'ов и т.п.)

Решил поддержку такого формата запихнуть себе в ядро, но, когда задумался над тем, как всё это будет описываться и лежать внутри zip'а, застопорился и подумал, что надо погуглить, есть ли уже подобное. В гугле не нашёл ответа.

Знает кто-нибудь о существовании чего-то подобного?

Автор:  pavia [ 13 авг 2013, 20:37 ]
Заголовок сообщения:  Re: Контейнер исполняемого кода, основанный на ZIP

В том же docx описание хранится в xml.
MSI и JAR посмотри, а вообще в место JAR скорее всего надо смотреть JNLP.

А вообще эти форматы мне видятся очень бредовыми. Пока сам досконально не обдумывал вопрос так как есть и за и против.
1) Плюс любой новичок в кодинге может выполнить работу. Интеграция с другими продуктами на высоте.
2) Минус, не предсказуемые ошибки интеграции. О будущей работе майкрософт позаботился зарания.
3) Плюс. Уменьшает занимаемое место, до 10 раз.
4) Минус сжатие. Увеличивает время обработки. zip насколько помню плохо паралелится.

Автор:  phantom-84 [ 13 авг 2013, 20:57 ]
Заголовок сообщения:  Re: Контейнер исполняемого кода, основанный на ZIP

sh2ezo писал(а):
Знает кто-нибудь о существовании чего-то подобного?
Не интересовался. Я когда-то хотел хранить базовый образ для RAM-диска в виде архива, но exe-шники никогда.

Основная проблема - это большой объем (даже с учетом упаковки). У Эппл что-то такое было, когда они переходили на Интел-архитектуру.

Да, docx (и др.) прикольный формат. Особенно мне понравилось править свойства вручную и перепаковывать с большей степенью сжатия. В некоторых форматах используются запароленные архивы. Интересно, в исходниках соотв. программ пароли указываются в виде обычных символьных строк? Вот разрабы напрягутся, если выдернуть какой-нибудь такой пароль и вывесить его на самом видном месте :D

Автор:  sh2ezo [ 13 авг 2013, 22:04 ]
Заголовок сообщения:  Re: Контейнер исполняемого кода, основанный на ZIP

Спасибо за ответы. Глянул JNLP. Это вообще не то, ибо это описатель для загрузки/запуска контента из сети. Конечно, такой способ, как там, можно взять за основу описателей контента внутри zip, но там лишь поверхностное описание, т.е., например, базы, точки входа, а также секции там не описываются. Скрипты можно описывать запросто, т.е. набили zip скриптами для каждой операционки, засунули jnlp-подобный описатель и отдали юзерам.

Также глянул JAR. Там файл манифеста по полезному содержимому схож с jnlp, но там ещё есть некоторая инфа.

pavia писал(а):
1) Плюс любой новичок в кодинге может выполнить работу. Интеграция с другими продуктами на высоте.
2) Минус, не предсказуемые ошибки интеграции. О будущей работе майкрософт позаботился зарания.
3) Плюс. Уменьшает занимаемое место, до 10 раз.
4) Минус сжатие. Увеличивает время обработки. zip насколько помню плохо паралелится.

Также к плюсам можно отнести возможность шифрования, т.е. без пароля запуск и дизассемблирование будут невозможны.

msi, насколько я понял, содержит только инфу о том, что и как установить.

Вот пример того, что я имел в виду:
Вложение:
HelloWorld.zip [2.24 КБ]
Скачиваний: 326

Автор:  Yoda [ 14 авг 2013, 12:42 ]
Заголовок сообщения:  Re: Контейнер исполняемого кода, основанный на ZIP

ZIP архив включает в себя два понятия - сжатие данных и формат архива. И то и другое имеет открытый формат, более того, сжатие даже стандартизировано. Для сжатия используется метод Deflate, стандартизированный в документах RFC 1950 и RFC 1951 и используемый во всех ZIP-совместимых архиваторах, архиваторе GZIP и многочисленных библиотеках и архиваторах, поддерживающих форматы ZIP и GZIP. Формат архива ZIP можно узнать из почти любого архиватора, распространяемого в исходниках.

UPD
Про шифрование расслабься. Если архив может без участия пользователя распаковать ОС, значит может и злоумышленник.
MSI использует другой формат архива и другой алгоритм сжатия данных.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/