Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Запись в архивы RAR5 без помощи архиватора

23.05.2024 | Категория: Образ мышления: Assembler | Автор: ManHunter

Запись в архивы RAR5 без помощи архиватора

Сегодня я расскажу, как можно добавить какой-нибудь файл в архив формата RAR5 без использования программ-архиваторов. Что это такое и для чего вообще надо, об этом можно почитать в предыдущих статьях.

Читать статью целиком »
Просмотров: 1119 | Комментариев: 2

Как сделать, чтобы окно WinRAR закрывалось по Esc

29.08.2016 | Категория: Software | Автор: ManHunter

Как сделать, чтобы окно WinRAR закрывалось по Esc

Всем хорош архиватор WinRAR, но есть у него один недостаток. Этот недостаток заключается в том, что главное окно GUI-версии архиватора закрывается только по Alt-F4 или по нажатию на крестик. Очень неудобно, тем более, что архиватор не является программой, которая постоянно должна быть на экране. Отработал задачу - завершил работу. Автора уже просили сделать опциональным закрытие по Esc, но Евгений эту просьбу проигнорировал. Придется нам самим избавляться от этого неудобства.

Читать статью целиком »
Просмотров: 5047 | Комментариев: 22

Запись в архивы SAR, PRS и CAR без помощи архиватора

11.02.2015 | Категория: Образ мышления: Assembler | Автор: ManHunter
В предыдущих трех частях цикла статей о записи информации в архивы различных форматов без помощи архиваторов были рассмотрены как популярные форматы, так и более редкие. Настало время совсем экзотических архиваторов, результатов работы которых вы вообще нигде не встретите. Поэтому разбор их внутренних форматов можно рассматривать исключительно как разминку для ума, никакой практической пользы от этих исследований ждать не надо. Тем более, что документации по некоторым архиваторам нет, все данные пришлось получать на основании готовых архивов.

Первый и самый простой из виденных архивов - SAR, сокращенное название от "Streamline Arching Utility" производства компании Streamline Design. Единственная существующая версия датируется 1993 годом. Файлы в архиве предваряются небольшим заголовком, общего заголовка архива нет, признак завершения архива - нулевой байт вместо следующего заголовка.
  1. ;---------------------------------------------
  2. ; SAR Header
  3. ;---------------------------------------------
  4. shlen   db      ?         ; Header length
  5. shcrc   db      ?         ; CRC of header
  6. smeth   rb      5         ; Compression method (' LH0 ' = store)
  7. sosize  dd      ?         ; Original file size
  8. scsize  dd      ?         ; Compressed file size
  9.         db      ?         ; unknown
  10.         db      ?         ; unknown
  11.         db      ?         ; unknown
  12.         db      ?         ; unknown
  13. sunkn1  db      ?         ; File attribute? (20h)
  14. sunkn2  db      ?         ; unknown (01h)
  15. slen    db      ?         ; Filename size
  16. sfname  rb      (?)       ; Filename (ASCII)
  17. sfcrc   dw      ?         ; 16-bit CRC
  18. sunkn3  db      ?         ; unknown (20h)
  19.         db      ?         ; unknown
  20. shend   db      ?         ; unknown
Мнемокода "(?)" в FASM нет, просто таким образом я обозначил текстовую строку для записи имени файла неопределенной длины. В реальном проекте будет достаточно MAX_PATH или вообще фиксированного размера.
  1. ; Признак окончания архива - нулевой байт
  2. tail    db      0
  3. tail_length   = $-tail 
Некоторые поля мне не удалось идентифицировать, в заголовке они отмечены комментарием "unknown", они должны быть заполнены нулевыми значениями, если не указано другого.

Читать статью целиком »
Просмотров: 5647 | Комментариев: 12

Запись в архивы ACE, HA и LIM без помощи архиватора

22.04.2013 | Категория: Образ мышления: Assembler | Автор: ManHunter
Предлагаю вашему вниманию третью, заключительную (надеюсь) статью про запись в архивы различных форматов без помощи архиваторов. Напомню, что в первой части были описаны наиболее популярные архиваторы, во второй части я начал рассказывать про более редкие и экзотические архиваторы, сейчас тему экзотики продолжу, а закончу исследования в четвертой части. Как и в предыдущей статье, к каждому примеру приложен сам архиватор и описание внутреннего формата его архивов, чтобы вам не пришлось их искать.

Начну с формата ACE. Это сравнительно свеженький продукт, по крайней мере есть версия под Windows, а сайт датирован 2000-м годом. Разработчики утверждают, что по степени сжатия чуть ли не превосходят архиватор RAR. Однако, в дикой природе я пока что не встречал чего-либо, упакованного этим архиватором, поэтому он и попал в категорию экзотических. Но внутренний формат архивных файлов .ACE очень простой. Не используются никакие "хвосты" в конце архива, есть только главный заголовок архива, после которого идут подряд упакованные файлы с заголовками. Формат заголовка следующий:
  1. ;---------------------------------------------
  2. ; ACE Header
  3. ;---------------------------------------------
  4. ahcrc   dw      ?                       ; CRC32x of the header
  5. ahsize  dw      ?                       ; Size of the header
  6. ahtype  db      ?                       ; Header type (01 = files)
  7. aflags  dw      ?                       ; Header flags (8001h)
  8. acsize  dd      ?                       ; Compressed file size
  9. aosize  dd      ?                       ; Original file size
  10. adtm    dd      ?                       ; Date/Time
  11. aattr   dd      ?                       ; File attributes
  12. afcrc   dd      ?                       ; CRC32x of the file
  13. ainfo   dd      ?                       ; Type and quality of compression
  14. ares    dw      ?                       ; Unknown
  15. aflen   dw      ?                       ; Filename size
  16. afname  rb      (?)                     ; Filename (ASCII)
Архиватор ACE поддерживает длинные имена файлов Windows, поэтому поле для хранения имени файла afname обозначено уже знакомым вам мнемокодом (?), то есть текстовая строка неопределенной длины. В нашем случае хватит MAX_PATH или другой фиксированной длины.

Читать статью целиком »
Просмотров: 7036 | Комментариев: 18

Запись в архивы ARC, ZOO и LHZ без помощи архиватора

20.02.2013 | Категория: Образ мышления: Assembler | Автор: ManHunter
В первой части статьи о записи в архивы без помощи архиваторов я разобрал внутренний формат наиболее популярных современных архиваторов. Как я понял, особого интереса статья не вызвала, но материал на новую статью уже был практически подготовлен. Не пропадать же добру. В этой части я расскажу о том, как внедряться в более редкие форматы архивов: ARC, ZOO и LHZ без использования сторонних приложений. Поскольку такие раритеты найти уже проблематично, к каждому примеру я приложил сам архиватор и описание внутреннего формата его архивов. Ну а совсем экзотические архиваторы рассмотрены в третьей и четвертой частях статьи.

ARC - формат архивов одноименного архиватора от компании System Enhancement Associates, который был достаточно широко распространен в 80-90-х годах прошлого века. Примечательно, что параметры его командной строки в последующем стали эталоном практически для всех других архиваторов с их появления и до нашего времени. Этот же формат архивов (но с расширением .PAK) также имеет архиватор PAK. Сейчас для операционных систем Windows появился архиватор FreeArc, который создает архивы с таким же расширением .ARC, но они имеют другой формат. Здесь я рассмотрю именно старый, DOS'овский формат архивов ARC.
  1. ;---------------------------------------------
  2. ; ARC/PAK Header
  3. ;---------------------------------------------
  4. csig    db      ?                       ; Sign
  5. cmeth   db      ?                       ; Compression method (2 = store)
  6. cfname  rb      13                      ; 12 char File name ASCIIZ
  7. ccsize  dd      ?                       ; Compressed file size
  8. cdtm    dd      ?                       ; Date/Time
  9. cfcrc   dw      ?                       ; 16-bit CRC
  10. cosize  dd      ?                       ; Original file size
Обратите внимание, что поле для хранения имени файла имеет фиксированный размер 13 символов (формат имени 8.3 + нулевой символ). Когда создавался этот архиватор, про длинные имена файлов никто даже не мечтал.
  1. ; Признак окончание архива
  2. tail    db      1Ah,00
  3. tail_length   = $-tail
Признаком окончания архива является двухбайтовый "хвост", который записан после последнего файла. Больше никаких особенностей нет, формат очень простой, многотомные архивы, блокировки от изменений и прочие новомодные штучки не поддерживаются, поэтому процесс внедрения также очень простой.

Читать статью целиком »
Просмотров: 8658 | Комментариев: 4

prev 01 02
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2026
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.09 сек. / MySQL: 3 (0.0035 сек.) / Память: 4.5 Mb
Наверх