Посл.ответ |
Сообщение |
Ранг: 33.0 (посетитель) Активность: 0.01↘0 Статус: Участник
|
Создано: 14 августа 2005 09:37 · Личное сообщение · #1
Здравствуйте. Поскажите, plz, где можно прочитать что-нибудь об алгоритмах сжатия программ, которые используют упаковщики?
| Сообщение посчитали полезным: |
|
Ранг: 40.0 (посетитель), 1thx Активность: 0.03↘0 Статус: Участник
|
Создано: 14 августа 2005 10:17 · Личное сообщение · #2
Алгоритмы ничем не отличаются от остальных алгоритмов сжатия, например которые архиваторы юзают. А почитать так, узнай название алго и пиши в гугле что-то вроде "спецификация blabla"
| Сообщение посчитали полезным: |
Ранг: 41.9 (посетитель) Активность: 0.02↘0 Статус: Участник Author of EXECryptor
|
Создано: 14 августа 2005 10:18 · Личное сообщение · #3
в основном это вариации на тему LZ с различными эвристиками. основное преимущество этих алгоритмов - маленький декомпрессор который не требует динамически выделяемой памяти.
почитать за компрессию можно на www.compression.ru
| Сообщение посчитали полезным: |
 Ранг: 115.8 (ветеран) Активность: 0.08↘0 Статус: Участник
|
Создано: 14 августа 2005 10:55 · Личное сообщение · #4
в разделе статей довольно неплохие мануалы "Об упаковщиках" 1 и 2 части.
----- Ни одно доброе дело не должно остаться безнаказанным !!! | Сообщение посчитали полезным: |
 Ранг: 536.4 (!), 171thx Активность: 0.66↘0.13 Статус: Администратор Создатель CRACKL@B
|
Создано: 14 августа 2005 12:25 · Личное сообщение · #5
[EXE]_cutor
Насколько я помню там не про алгоритмы сжатия.
Devil
Если собираешься писать EXE пакер - бери библиотеку aplib для начала и не парься.
----- Всем не угодишь | Сообщение посчитали полезным: |
 Ранг: 115.8 (ветеран) Активность: 0.08↘0 Статус: Участник
|
Создано: 14 августа 2005 18:18 · Личное сообщение · #6
Bad_guy пишет:
там не про алгоритмы сжатия
там много про что. В любом случае для написания собсного пакера и изучения алго сущ-х пакеров лишней данная инфа не будет.
----- Ни одно доброе дело не должно остаться безнаказанным !!! | Сообщение посчитали полезным: |
Ранг: 33.0 (посетитель) Активность: 0.01↘0 Статус: Участник
|
Создано: 15 августа 2005 08:32 · Личное сообщение · #7
Нет, я не хочу писать EXE пакер. Мне просто интересен алгоритм.
| Сообщение посчитали полезным: |
Ранг: 495.3 (мудрец) Активность: 0.3↘0 Статус: Участник
|
Создано: 15 августа 2005 09:45 · Личное сообщение · #8
Devil пишет:
Мне просто интересен алгоритм.
Действительно, обычное сжатие. Можно прикрутить всё что хочешь.
У Broken Sword'a лежат исходники RLE на Асме под Intel x86. Вот ссылка:
brokensword.narod.ru/RLE.zip
----- Всем привет, я вернулся | Сообщение посчитали полезным: |
Ранг: 41.9 (посетитель) Активность: 0.02↘0 Статус: Участник Author of EXECryptor
|
Создано: 15 августа 2005 11:01 · Личное сообщение · #9
да при чем здесь рле?  что им можно сжать?  писиикс?  к коду это практически неприменимо - ну разве что писать программы из одних нопов (кстати интересная идея :s6
еще раз говорю - копай LZ77 и варианты. apLib, jcalg, upx и прочея юзают именно вариации на тему LZ. ключевой момент - byte aligned работа с компрессированым потоком.
ключевые слова для гугления LZF, LZV, LZRW1, LZO.
| Сообщение посчитали полезным: |
Ранг: 54.9 (постоянный) Активность: 0.02↘0 Статус: Участник
|
Создано: 15 августа 2005 12:44 · Личное сообщение · #10
Relayer пишет:
да при чем здесь рле?
Есть отдельные личности которые прикручивают Huffman'a или Арифметику или ещё лучше PPMD.
| Сообщение посчитали полезным: |
Ранг: 41.9 (посетитель) Активность: 0.02↘0 Статус: Участник Author of EXECryptor
|
Создано: 15 августа 2005 13:07 · Личное сообщение · #11
xShadow пишет:
которые прикручивают Huffman'a или Арифметику или ещё лучше PPMD
ну так рле там так ... одна из частей балета. и то не всегда. с другой стороны прикручивать ппмд ... о накладных расходах на декомпрессию вспомни. сколько оно памяти сожрет? и с какой скоростью будет работать? арифметику лучше тоже не трогать. есть range coder Суботина. он пошустрее будет.
| Сообщение посчитали полезным: |
 Ранг: 199.6 (ветеран), 12thx Активность: 0.1↘0 Статус: Участник www.uinc.ru
|
Создано: 15 августа 2005 13:43 · Личное сообщение · #12
> арифметику лучше тоже не трогать.
И тем не менее реальные пацаны используют именно ее
PECompact2, NSPack, UPack, MEW, e.t.c - LZMA (lz+арифметика, ага)
ASPack - LZH (тоже похоже работа Павлова)
А Шкаринский PPMD не используют потому что он написан через задницу. Только Рошаль к RAR прикрутил и теперь наверно локти грызет потому что на 50 байтный текстовый файл этот PPM из-за кривой реализации выделяте 250 мегов памяти, хотя реально используют десять килобайт =)
| Сообщение посчитали полезным: |
Ранг: 41.9 (посетитель) Активность: 0.02↘0 Статус: Участник Author of EXECryptor
|
Создано: 15 августа 2005 14:38 · Личное сообщение · #13
DrGolova пишет:
И тем не менее реальные пацаны используют именно ее
всеравно это медленнее  короче на любителя
а если для кода грамотный препроцессинг сделать - то и арифметика не нада
DrGolova пишет:
А Шкаринский PPMD не используют потому что он написан через задницу
так давно можно было бы уже переписать - сырки то лет пять как в сети валяются
аль руки кривы? аль пацаны настоко "реальны" что рук вооще чисто канкретно не имеют?
| Сообщение посчитали полезным: |
 Ранг: 199.6 (ветеран), 12thx Активность: 0.1↘0 Статус: Участник www.uinc.ru
|
Создано: 15 августа 2005 15:31 · Поправил: DrGolova · Личное сообщение · #14
> так давно можно было бы уже переписать - сырки то лет пять как в сети валяются
Посмотри сорцы, и поймешь что переписать это принципиально нельзя. Я умолчу что там нет ниодного коментария, но самая неприятная особеннось в том что в потоке нет битика говорящего что надо сбросить контексты, вместо этого аффтар ждет когда кончится память в его куче (а это какраз те 256 мб).
И еще конечно в этой куче все именно в кучу и контексты и окно и указатели, и ниодной проверки валидности данных, так что чуть попадется битый файл все сразу с треском падает с разрушением кучи - ай да пЕсатель =)
> аль руки кривы? аль пацаны настоко "реальны" что рук вооще чисто канкретно не имеют?
У кого руки не кривые, те написали свои арифметики, и назвали подругому. А переписывание чужого барахла это удел пингвинов с gpl.
| Сообщение посчитали полезным: |
Ранг: 41.9 (посетитель) Активность: 0.02↘0 Статус: Участник Author of EXECryptor
|
Создано: 15 августа 2005 16:09 · Личное сообщение · #15
DrGolova пишет:
Посмотри сорцы
типа я их не видел  да, через  писано. ну так что? а мозги зачем (если они есть конечно)? ппмд - это не шкаринский исходник, это алгоритм. а есть еще и другие ппм"ы. и нарисовать свою вариацию на тему ппм - ничего сложного. если конечно с головой все в порядке.
так что дело тут не в руках, сырках и аффтарах - это все отмазки. дело в том что ппм по определению достаточно прожорливая скотинка чтобы его применять в таких задачах
| Сообщение посчитали полезным: |
Ранг: 54.9 (постоянный) Активность: 0.02↘0 Статус: Участник
|
Создано: 15 августа 2005 17:05 · Поправил: xShadow · Личное сообщение · #16
Relayer пишет:
прожорливая скотинка чтобы его применять в таких задачах
Прожорливая это да, но всё относительно. К примеру делал я для эксперимента на движке PPMD упаковщик, степень сжатия отличная ну подумаешь что загружается 3-5 секунд и памяти сжирает 64 мб.
| Сообщение посчитали полезным: |
Ранг: 41.9 (посетитель) Активность: 0.02↘0 Статус: Участник Author of EXECryptor
|
Создано: 15 августа 2005 17:41 · Личное сообщение · #17
xShadow пишет:
степень сжатия отличная
так за это никто и не говорит. на текстовых файлах и иже с ними - красота получается. но вот к бинарникам оно не очень применимо. ключевая фраза - грамотный препроцессинг данных.
| Сообщение посчитали полезным: |
 Ранг: 536.4 (!), 171thx Активность: 0.66↘0.13 Статус: Администратор Создатель CRACKL@B
|
Создано: 15 августа 2005 17:49 · Личное сообщение · #18
Relayer пишет:
а если для кода грамотный препроцессинг сделать - то и арифметика не нада
Какой например ? Интересно.
----- Всем не угодишь | Сообщение посчитали полезным: |
Ранг: 41.9 (посетитель) Активность: 0.02↘0 Статус: Участник Author of EXECryptor
|
Создано: 15 августа 2005 17:55 · Личное сообщение · #19
да хотябы смещения из относительных в абсолютные перевести в jmp/call
| Сообщение посчитали полезным: |
 Ранг: 199.6 (ветеран), 12thx Активность: 0.1↘0 Статус: Участник www.uinc.ru
|
Создано: 15 августа 2005 18:38 · Личное сообщение · #20
> да хотябы смещения из относительных в абсолютные перевести в jmp/call
Это мы знаем. Еще можно bswap'нуть параметр у ff15/ff25. А как еще можно?
| Сообщение посчитали полезным: |
Ранг: 41.9 (посетитель) Активность: 0.02↘0 Статус: Участник Author of EXECryptor
|
Создано: 15 августа 2005 21:20 · Личное сообщение · #21
DrGolova пишет:
А как еще можно
а дальше жуть начинается. пару лет тому назад мне попадалось пару дисеров буржуйских на эти темы ... так там чуть ли не встроенный дизассемблер в упаковщик
| Сообщение посчитали полезным: |
 Ранг: 536.4 (!), 171thx Активность: 0.66↘0.13 Статус: Администратор Создатель CRACKL@B
|
Создано: 15 августа 2005 22:53 · Личное сообщение · #22
Relayer пишет:
да хотябы смещения из относительных в абсолютные перевести в jmp/call
А на сколько процентов в итоге такая оптимизация влияет на степень сжатия ?
----- Всем не угодишь | Сообщение посчитали полезным: |
Ранг: 41.9 (посетитель) Активность: 0.02↘0 Статус: Участник Author of EXECryptor
|
Создано: 15 августа 2005 23:19 · Поправил: Relayer · Личное сообщение · #23
Bad_guy пишет:
А на сколько процентов в итоге такая оптимизация влияет на степень сжатия ?
до 10% позволяет выиграть. опять же все сильно зависит от данных.
| Сообщение посчитали полезным: |
 Ранг: 536.4 (!), 171thx Активность: 0.66↘0.13 Статус: Администратор Создатель CRACKL@B
|
Создано: 15 августа 2005 23:40 · Личное сообщение · #24
Relayer
я поглядел что "абсолютные" команды на два байта длинее, чем относительные. ты не перепутал ?
E9/EA, например.
----- Всем не угодишь | Сообщение посчитали полезным: |
Ранг: 41.9 (посетитель) Активность: 0.02↘0 Статус: Участник Author of EXECryptor
|
Создано: 16 августа 2005 00:05 · Личное сообщение · #25
Bad_guy пишет:
"абсолютные" команды на два байта длинее
не перепутал. суть препроцессинга в том, что данные подготавливаются. после декомпрессии надо сделать шаг обратный препроцессингу. препроцессинг может быть самый разный. например перестановки байтов по какомуто хитрому вектору, вычитание чегото от чегото и тп
| Сообщение посчитали полезным: |