Сейчас на форуме: user99, _MBK_, ManHunter, Magister Yoda, rtsgreg1989 (+9 невидимых)

 eXeL@B —› Основной форум —› Алгоритмы упаковки программ
Посл.ответ Сообщение

Ранг: 33.0 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 14 августа 2005 09:37
· Личное сообщение · #1

Здравствуйте. Поскажите, plz, где можно прочитать что-нибудь об алгоритмах сжатия программ, которые используют упаковщики?



Ранг: 40.0 (посетитель), 1thx
Активность: 0.030
Статус: Участник

Создано: 14 августа 2005 10:17
· Личное сообщение · #2

Алгоритмы ничем не отличаются от остальных алгоритмов сжатия, например которые архиваторы юзают. А почитать так, узнай название алго и пиши в гугле что-то вроде "спецификация blabla"



Ранг: 41.9 (посетитель)
Активность: 0.020
Статус: Участник
Author of EXECryptor

Создано: 14 августа 2005 10:18
· Личное сообщение · #3

в основном это вариации на тему LZ с различными эвристиками. основное преимущество этих алгоритмов - маленький декомпрессор который не требует динамически выделяемой памяти.
почитать за компрессию можно на www.compression.ru




Ранг: 115.8 (ветеран)
Активность: 0.080
Статус: Участник

Создано: 14 августа 2005 10:55
· Личное сообщение · #4

в разделе статей довольно неплохие мануалы "Об упаковщиках" 1 и 2 части.

-----
Ни одно доброе дело не должно остаться безнаказанным !!!





Ранг: 536.4 (!), 171thx
Активность: 0.660.13
Статус: Администратор
Создатель CRACKL@B

Создано: 14 августа 2005 12:25
· Личное сообщение · #5

[EXE]_cutor
Насколько я помню там не про алгоритмы сжатия.

Devil
Если собираешься писать EXE пакер - бери библиотеку aplib для начала и не парься.

-----
Всем не угодишь





Ранг: 115.8 (ветеран)
Активность: 0.080
Статус: Участник

Создано: 14 августа 2005 18:18
· Личное сообщение · #6

Bad_guy пишет:
там не про алгоритмы сжатия

там много про что. В любом случае для написания собсного пакера и изучения алго сущ-х пакеров лишней данная инфа не будет.

-----
Ни одно доброе дело не должно остаться безнаказанным !!!




Ранг: 33.0 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 15 августа 2005 08:32
· Личное сообщение · #7

Нет, я не хочу писать EXE пакер. Мне просто интересен алгоритм.



Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 15 августа 2005 09:45
· Личное сообщение · #8

Devil пишет:
Мне просто интересен алгоритм.

Действительно, обычное сжатие. Можно прикрутить всё что хочешь.
У Broken Sword'a лежат исходники RLE на Асме под Intel x86. Вот ссылка:
brokensword.narod.ru/RLE.zip

-----
Всем привет, я вернулся




Ранг: 41.9 (посетитель)
Активность: 0.020
Статус: Участник
Author of EXECryptor

Создано: 15 августа 2005 11:01
· Личное сообщение · #9

да при чем здесь рле? что им можно сжать? писиикс? к коду это практически неприменимо - ну разве что писать программы из одних нопов (кстати интересная идея :s6
еще раз говорю - копай LZ77 и варианты. apLib, jcalg, upx и прочея юзают именно вариации на тему LZ. ключевой момент - byte aligned работа с компрессированым потоком.
ключевые слова для гугления LZF, LZV, LZRW1, LZO.



Ранг: 54.9 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 15 августа 2005 12:44
· Личное сообщение · #10

Relayer пишет:
да при чем здесь рле?

Есть отдельные личности которые прикручивают Huffman'a или Арифметику или ещё лучше PPMD.



Ранг: 41.9 (посетитель)
Активность: 0.020
Статус: Участник
Author of EXECryptor

Создано: 15 августа 2005 13:07
· Личное сообщение · #11

xShadow пишет:
которые прикручивают Huffman'a или Арифметику или ещё лучше PPMD

ну так рле там так ... одна из частей балета. и то не всегда. с другой стороны прикручивать ппмд ... о накладных расходах на декомпрессию вспомни. сколько оно памяти сожрет? и с какой скоростью будет работать? арифметику лучше тоже не трогать. есть range coder Суботина. он пошустрее будет.




Ранг: 199.6 (ветеран), 12thx
Активность: 0.10
Статус: Участник
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.020
Статус: Участник
Author of EXECryptor

Создано: 15 августа 2005 14:38
· Личное сообщение · #13

DrGolova пишет:
И тем не менее реальные пацаны используют именно ее


всеравно это медленнее короче на любителя
а если для кода грамотный препроцессинг сделать - то и арифметика не нада

DrGolova пишет:
А Шкаринский PPMD не используют потому что он написан через задницу


так давно можно было бы уже переписать - сырки то лет пять как в сети валяются
аль руки кривы? аль пацаны настоко "реальны" что рук вооще чисто канкретно не имеют?




Ранг: 199.6 (ветеран), 12thx
Активность: 0.10
Статус: Участник
www.uinc.ru

Создано: 15 августа 2005 15:31 · Поправил: DrGolova
· Личное сообщение · #14

> так давно можно было бы уже переписать - сырки то лет пять как в сети валяются

Посмотри сорцы, и поймешь что переписать это принципиально нельзя. Я умолчу что там нет ниодного коментария, но самая неприятная особеннось в том что в потоке нет битика говорящего что надо сбросить контексты, вместо этого аффтар ждет когда кончится память в его куче (а это какраз те 256 мб).
И еще конечно в этой куче все именно в кучу и контексты и окно и указатели, и ниодной проверки валидности данных, так что чуть попадется битый файл все сразу с треском падает с разрушением кучи - ай да пЕсатель =)

> аль руки кривы? аль пацаны настоко "реальны" что рук вооще чисто канкретно не имеют?

У кого руки не кривые, те написали свои арифметики, и назвали подругому. А переписывание чужого барахла это удел пингвинов с gpl.



Ранг: 41.9 (посетитель)
Активность: 0.020
Статус: Участник
Author of EXECryptor

Создано: 15 августа 2005 16:09
· Личное сообщение · #15

DrGolova пишет:
Посмотри сорцы


типа я их не видел да, через писано. ну так что? а мозги зачем (если они есть конечно)? ппмд - это не шкаринский исходник, это алгоритм. а есть еще и другие ппм"ы. и нарисовать свою вариацию на тему ппм - ничего сложного. если конечно с головой все в порядке.
так что дело тут не в руках, сырках и аффтарах - это все отмазки. дело в том что ппм по определению достаточно прожорливая скотинка чтобы его применять в таких задачах



Ранг: 54.9 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 15 августа 2005 17:05 · Поправил: xShadow
· Личное сообщение · #16

Relayer пишет:
прожорливая скотинка чтобы его применять в таких задачах

Прожорливая это да, но всё относительно. К примеру делал я для эксперимента на движке PPMD упаковщик, степень сжатия отличная ну подумаешь что загружается 3-5 секунд и памяти сжирает 64 мб.



Ранг: 41.9 (посетитель)
Активность: 0.020
Статус: Участник
Author of EXECryptor

Создано: 15 августа 2005 17:41
· Личное сообщение · #17

xShadow пишет:
степень сжатия отличная


так за это никто и не говорит. на текстовых файлах и иже с ними - красота получается. но вот к бинарникам оно не очень применимо. ключевая фраза - грамотный препроцессинг данных.




Ранг: 536.4 (!), 171thx
Активность: 0.660.13
Статус: Администратор
Создатель CRACKL@B

Создано: 15 августа 2005 17:49
· Личное сообщение · #18

Relayer пишет:
а если для кода грамотный препроцессинг сделать - то и арифметика не нада

Какой например ? Интересно.

-----
Всем не угодишь




Ранг: 41.9 (посетитель)
Активность: 0.020
Статус: Участник
Author of EXECryptor

Создано: 15 августа 2005 17:55
· Личное сообщение · #19

да хотябы смещения из относительных в абсолютные перевести в jmp/call




Ранг: 199.6 (ветеран), 12thx
Активность: 0.10
Статус: Участник
www.uinc.ru

Создано: 15 августа 2005 18:38
· Личное сообщение · #20

> да хотябы смещения из относительных в абсолютные перевести в jmp/call

Это мы знаем. Еще можно bswap'нуть параметр у ff15/ff25. А как еще можно?



Ранг: 41.9 (посетитель)
Активность: 0.020
Статус: Участник
Author of EXECryptor

Создано: 15 августа 2005 21:20
· Личное сообщение · #21

DrGolova пишет:
А как еще можно


а дальше жуть начинается. пару лет тому назад мне попадалось пару дисеров буржуйских на эти темы ... так там чуть ли не встроенный дизассемблер в упаковщик




Ранг: 536.4 (!), 171thx
Активность: 0.660.13
Статус: Администратор
Создатель CRACKL@B

Создано: 15 августа 2005 22:53
· Личное сообщение · #22

Relayer пишет:
да хотябы смещения из относительных в абсолютные перевести в jmp/call

А на сколько процентов в итоге такая оптимизация влияет на степень сжатия ?

-----
Всем не угодишь




Ранг: 41.9 (посетитель)
Активность: 0.020
Статус: Участник
Author of EXECryptor

Создано: 15 августа 2005 23:19 · Поправил: Relayer
· Личное сообщение · #23

Bad_guy пишет:
А на сколько процентов в итоге такая оптимизация влияет на степень сжатия ?


до 10% позволяет выиграть. опять же все сильно зависит от данных.




Ранг: 536.4 (!), 171thx
Активность: 0.660.13
Статус: Администратор
Создатель CRACKL@B

Создано: 15 августа 2005 23:40
· Личное сообщение · #24

Relayer
я поглядел что "абсолютные" команды на два байта длинее, чем относительные. ты не перепутал ?
E9/EA, например.

-----
Всем не угодишь




Ранг: 41.9 (посетитель)
Активность: 0.020
Статус: Участник
Author of EXECryptor

Создано: 16 августа 2005 00:05
· Личное сообщение · #25

Bad_guy пишет:
"абсолютные" команды на два байта длинее


не перепутал. суть препроцессинга в том, что данные подготавливаются. после декомпрессии надо сделать шаг обратный препроцессингу. препроцессинг может быть самый разный. например перестановки байтов по какомуто хитрому вектору, вычитание чегото от чегото и тп


 eXeL@B —› Основной форум —› Алгоритмы упаковки программ
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати