
Быстрый поиск
Введите фрагмент названия статьи для поиска
Запись в архивы 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
Читать статью целиком »
Просмотров: 17813 | Комментариев: 12


