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

Как сделать, чтобы окно WinRAR закрывалось по Esc
29.08.2016 | Категория: Software | Автор: ManHunter

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

Запись в архивы SAR, PRS и CAR без помощи архиватора
11.02.2015 | Категория: Образ мышления: Assembler | Автор: ManHunter
В предыдущих трех частях цикла статей о записи информации в архивы различных форматов без помощи архиваторов были рассмотрены как популярные форматы, так и более редкие. Настало время совсем экзотических архиваторов, результатов работы которых вы вообще нигде не встретите. Поэтому разбор их внутренних форматов можно рассматривать исключительно как разминку для ума, никакой практической пользы от этих исследований ждать не надо. Тем более, что документации по некоторым архиваторам нет, все данные пришлось получать на основании готовых архивов.Первый и самый простой из виденных архивов - SAR, сокращенное название от "Streamline Arching Utility" производства компании Streamline Design. Единственная существующая версия датируется 1993 годом. Файлы в архиве предваряются небольшим заголовком, общего заголовка архива нет, признак завершения архива - нулевой байт вместо следующего заголовка.
Code (Assembler) : Убрать нумерацию
- ;---------------------------------------------
- ; SAR Header
- ;---------------------------------------------
- shlen db ? ; Header length
- shcrc db ? ; CRC of header
- smeth rb 5 ; Compression method (' LH0 ' = store)
- sosize dd ? ; Original file size
- scsize dd ? ; Compressed file size
- db ? ; unknown
- db ? ; unknown
- db ? ; unknown
- db ? ; unknown
- sunkn1 db ? ; File attribute? (20h)
- sunkn2 db ? ; unknown (01h)
- slen db ? ; Filename size
- sfname rb (?) ; Filename (ASCII)
- sfcrc dw ? ; 16-bit CRC
- sunkn3 db ? ; unknown (20h)
- db ? ; unknown
- shend db ? ; unknown
Code (Assembler) : Убрать нумерацию
- ; Признак окончания архива - нулевой байт
- tail db 0
- tail_length = $-tail
Читать статью целиком »
Просмотров: 4937 | Комментариев: 12

Запись в архивы ACE, HA и LIM без помощи архиватора
22.04.2013 | Категория: Образ мышления: Assembler | Автор: ManHunter
Предлагаю вашему вниманию третью, заключительную (надеюсь) статью про запись в архивы различных форматов без помощи архиваторов. Напомню, что в первой части были описаны наиболее популярные архиваторы, во второй части я начал рассказывать про более редкие и экзотические архиваторы, а сейчас тему экзотики можно будет закончить. Как и в предыдущей статье, к каждому примеру приложен сам архиватор и описание внутреннего формата его архивов, чтобы вам не пришлось их искать.Начну с формата ACE. Это сравнительно свеженький продукт, по крайней мере есть версия под Windows, а сайт датирован 2000-м годом. Разработчики утверждают, что по степени сжатия чуть ли не превосходят архиватор RAR. Однако, в дикой природе я пока что не встречал чего-либо, упакованного этим архиватором, поэтому он и попал в категорию экзотических. Но внутренний формат архивных файлов .ACE очень простой. Не используются никакие "хвосты" в конце архива, есть только главный заголовок архива, после которого идут подряд упакованные файлы с заголовками. Формат заголовка следующий:
Code (Assembler) : Убрать нумерацию
- ;---------------------------------------------
- ; ACE Header
- ;---------------------------------------------
- ahcrc dw ? ; CRC32x of the header
- ahsize dw ? ; Size of the header
- ahtype db ? ; Header type (01 = files)
- aflags dw ? ; Header flags (8001h)
- acsize dd ? ; Compressed file size
- aosize dd ? ; Original file size
- adtm dd ? ; Date/Time
- aattr dd ? ; File attributes
- afcrc dd ? ; CRC32x of the file
- ainfo dd ? ; Type and quality of compression
- ares dw ? ; Unknown
- aflen dw ? ; Filename size
- afname rb (?) ; Filename (ASCII)
Читать статью целиком »
Просмотров: 6140 | Комментариев: 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.
Code (Assembler) : Убрать нумерацию
- ;---------------------------------------------
- ; ARC/PAK Header
- ;---------------------------------------------
- csig db ? ; Sign
- cmeth db ? ; Compression method (2 = store)
- cfname rb 13 ; 12 char File name ASCIIZ
- ccsize dd ? ; Compressed file size
- cdtm dd ? ; Date/Time
- cfcrc dw ? ; 16-bit CRC
- cosize dd ? ; Original file size
Code (Assembler) : Убрать нумерацию
- ; Признак окончание архива
- tail db 1Ah,00
- tail_length = $-tail
Читать статью целиком »
Просмотров: 7637 | Комментариев: 4

Запись в архивы RAR, ZIP и ARJ без помощи архиватора
09.08.2011 | Категория: Образ мышления: Assembler | Автор: ManHunter
Решил вспомнить свою юность, когда я занимался разработкой "самоходного программного обеспечения". Одной из особенностей моих творений было распространение не только через исполняемые файлы, но и через архивы различных форматов. Технология внедрения в архивные файлы не нова, и использовалась в разных вирусах еще со времен MS-DOS. Так как готовых решений на тот момент у меня не было, пришлось доходить до всего самому. Никакого вредоносного кода на этом сайте не появится, а вот некоторыми своими наработками по внедрению в архивы я с удовольствием поделюсь. Поскольку полноценно продублировать алгоритмы сжатия архиваторов в столь малом размере файла не представляется возможным, внедряться в архивы мы будем по методу "Store". Это означает, что файл в архив добавлен с опцией "без сжатия". Внутренние форматы различных архивных файлов, естественно, различаются, но у всех обязательно присутствуют служебные заголовки, используемые архиваторами, и, собственно, сами упакованные данные.Самый простой для внедрения - формат RAR, используемый одноименным архиватором. Подробную спецификацию формата RAR можно почитать здесь.
Code (Assembler) : Убрать нумерацию
- ;---------------------------------------------
- ; RAR Header
- ;---------------------------------------------
- rhcrc dw ? ; --> Low-word CRC32 of fields in header
- rhtype db ? ; Header type: 0x74
- rhflag dw ? ; Bit flags
- rhsize dw ? ; File header full size
- rcsize dd ? ; Compressed file size
- rosize dd ? ; Uncompressed file size
- rhoss db ? ; Target OS version
- rfcrc dd ? ; --> File CRC32
- rdtm dd ? ; File Time/Date
- runp db ? ; Archive version to extract
- rmeth db ? ; Packing method (store)
- rnsize dw ? ; File name size
- rfattr dd ? ; File attributes
- rfname rb (?) ; File name
Code (Assembler) : Убрать нумерацию
- ; "Хвост" архива - признак окончания данных
- tail db 0C4h,03Dh,07Bh,00h,040h,07h,00h
- tail_length = $-tail
Читать статью целиком »
Просмотров: 15589 | Комментариев: 12
