|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Авг 5, 2004 11:49:15 При реверсировании одной программы столкнулся с таким вот алгоритмом сжатия(или это такак реализация ?). Процедура декомпрессии выглядит так: v1 = pk_table[0]; v2 = pk_table[1]; pk_table = pk_table + 8; /* этот кусок я выделил отдельно, он повторяется v1++; a = pk_tabel[v1]; a = a + v2; v2 = a; b = pk_table[v2]; pk_table[v1] = b; pk_table[v2] = a; outbuf[0] = pk_table[a+b] ^ inbuf[0]; */ Этот кусок видимо определен через #define или объявлен как inline, ибо в процедуре он идет так: */ v1++; a = pk_table[v1]; a = a + v2; v2 = a; b = pk_table[v2]; pk_table[v1] = b; pk_table[v2] = a; outbuf[0] = pk_table[a+b] ^ inbuf[0]; //next one v1++; a = pk_table[v1]; a = a + v2; v2 = a; b = pk_table[v2]; pk_table[v1] = b; pk_table[v2] = a; outbuf[1] = pk_table[a+b] ^ inbuf[1]; //next one v1++; a = pk_table[v1]; a = a + v2; v2 = a; b = pk_table[v2]; pk_table[v1] = b; pk_table[v2] = a; outbuf[2] = pk_table[a+b] ^ inbuf[2]; Таких блоков в цикле 8. Я предположил, что это работа с восмью битами одного байта. Потом берут следующие восемь бит, и тд. Таблица - это буфер int величин, она формируется на основе таблицы из файла путем сложных преобразований. Именно эти преобразования мне не понятны, я не могу их "раскрыть" и прошу помощи. Может кто сталкивался с таким алгоритмом сжатия. Если необходимо больше информации, пишите какая из процедур интересна. В программе они идут так(названия мои): pk_init(c_table, c_tablelen, f_table, f_tablelen, table, tablelen); /* из запакованного файла определенным образом загружается таблица table. c_table - набор каких-то констант: db 19h, 0AFh, 70h, 0BDh, 0ABh, 0D5h, 9Fh, 88h, 0, 0C0h db 86h, 40h, 58h, 5, 9Ah, 0A3h, 7Ah, 5Ah, 1Fh, 0EEh, 42h db 0Fh, 24h, 7Ch, 7, 0DFh, 0ADh, 9, 0F6h, 20h, 40h, 81h db 70h, 0C0h, 3Ah, 0D4h, 38h, 0C0h, 94h, 0A2h, 53h, 66h db 6Bh, 66h, 0B5h, 5Ch, 61h, 12h, 0B8h, 0CDh, 51h, 5Ch db 8Fh, 86h, 0B2h, 0Bh, 24h, 38h, 0BFh, 43h, 0E9h, 0C6h db 0ECh, 0C9h f_table - таблица из файла */ pk_modtable(pk_table, table); // эта процедура преобразовывает полученную таблицу по определенному алгоритму и кладет ее в pk_table pk_decompress(pk_table, inbuf, outbuf, inbuflen); // эту я здесь описал |
|
|
Дата: Авг 5, 2004 11:54:30 techgl Твое сообщение информационное или содержит вопрос? |
|
|
Дата: Авг 5, 2004 14:44:26 techgl отдаленно чем-то напоминает адаптивное кодирование Хаффмена в том плане, что: 1. pk_modtable инициализирует pk_table (расчитывает вероятности бит/битовых последовательностей???) 2. в процессе работы модифицируется pk_table - это как раз характерно для адаптивного кодирования а на сколько хорошо это дело жмет? |
|
|
Дата: Авг 5, 2004 18:32:18 2q_q: Естестевенно вопрос. Необходимо распознать алгоритм сжатия и написать(я должен написать) компрессор/декомпрессор. Я просто подумал кто сталкивался с таким. Ибо программа реверсируется и мне ничего не известно об методе сжатия. |
|
|
Дата: Авг 5, 2004 18:33:30 2Max: насколько хорошо жмет я не в курсе. Моя цель - распознать алгоритм и написать компрессор. Ибо в программе используются запакованные файлы. |
|
|
Дата: Авг 5, 2004 20:00:56 techgl на compression.ru где-то был тест различных компрессоров на разных наборах данных (текст, екзе и т.п.) по коэффициенту сжатия на разных данных можно примерно идентифицировать алгоритм |
|
|
Дата: Авг 5, 2004 21:02:06 на compression.ru где-то был тест различных компрессоров на разных наборах данных (текст, екзе и т.п.) по коэффициенту сжатия на разных данных можно примерно идентифицировать алгоритм Я не распологаю файлами, зажатыми этим компрессором(по причине отсутствия компрессора). |
|
|
Дата: Авг 6, 2004 11:18:52 Все, отбой. Это оказалась реализаия RSA. |
|
|
Дата: Авг 6, 2004 13:40:51 оригинальный компрессор однако :) |
|
|
Дата: Авг 6, 2004 13:48:28 оригинальный компрессор однако :) а что, судя по публичному ключу(?) любой файл ужмется до 512 бит, правда с распаковкой могут быть проблемы :)) |
|
|
Дата: Авг 6, 2004 17:02:41 оригинальный компрессор однако :) Глупо ошибся. Но меня на такие мысли натолкнула сигнатура: 'PKF'\x0x0A\x01.... Я PKF - взял за аббревиатуру PacKed File. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.051 |