Bill Prisoner Compression Engine v1.0 (BPCE v1.0)
=================================================

Дата релиза: 29.11.2005

Описание:
=========
Это движок для использования сжатия в Ваших вирусах или просто прогах. Написан на MASM32 => предназначен для использования в вирусах пишущихся на MASM32. Естественно Вы можете отредактировать его с использованием синтаксиса TASM, FASM, etc. Сжатие не сказать что уж очень крутое, но оно все таки есть. Чтож, эта работа помогла мне улучшить мой ассемблер.
Для использования в Вашем asm-файле пишете:

;Bill Prisoner Compression Engine Include File
include "bpce.inc"

Для сжатия используйте функцию bp_compress. К примеру у нас есть глобальные переменные с соответствующими именами. В EBP - дельта-смещение. Вызывать её надо так:

push dword ptr [ebp+CompressBuffer];Буфер куда будут помещены упакованные данные
push dword ptr [ebp+FileSize];Размер файла
push dword ptr [ebp+hMap];Данные для сжатия
push dword ptr [ebp+WorkBuffer];Рабочий буфер. Должен быть как минимум 14592 байт или 14,25 КБ. Может быть и больше, но в этом случае дополнительные данные использоваться не будут.
call bp_compress

Для декомпрессии используем такой код:

push dword ptr [ebp+WorkBuffer];Рабочий буффер. Должен быть как минимум 8448 байт или 8,25 КБ
push dword ptr [ebp+CompressBuffer];Сжатые данные
push dword ptr [ebp+hMap2];Распакованные данные.
call bp_decompress


Фишки(tricks):
==============
Полностью написан на ассемблере + возможность использования в базонезависимом коде.
Используем стандартный статический метод Хаффмана для сжатия. Заголовок имеет следующий вид:

Header struct
	Signature dw ?;Сигнатура. Равна "BP"
	HuffmanCodesSize dw ?;Размер таблицы кодов Хаффмана
	CompressSize dd ?;Сжатый размер данных
	DecompressSize dd ?;Распакованный размер данных
	CRC32 dd ?;Чексумма
Header ends

Технические подробности:
========================
Читайте статью "Компрессия в вирусах".

Известные баги или тонкие моменты:
==================================
Пока не известно. Если Вы обнаружите в коде движка ошибку, то дайте мне знать по адресу ниже.

Автор:
======
NAME: Bill Prisoner / TPOC
E-MAIL: bill_tpoc@mail.ru
WWW: http://thepoc.exploiterz.org
