Консультация № 157236
10.01.2009, 18:20
0.00 руб.
0 4 1
Скажите пожалйста, какие методы сжатия используют упаковщики UPX, FSG и WinUPACK?

Обсуждение

Неизвестный
11.01.2009, 17:56
общий
это ответ
Здравствуйте, Exponenta!
UPX - использует алгоритм UCL (свободная реализация алгоритма NRV) (версии 3.0 и выше - ещё и LZMA).
FSG - LZMA и собственная реализация NRV.
WinUPACK - аналогично.
Разница в степени сжатия - лишь разница в реализации алгоритмов и подборе внутренних констант алгоритмов.
Исходя из того, что вопрос задан в рассылку по защите информации - добавлю, что заглушка UPX, предназначенная для самораспаковки, не имеет каких-либо средств защиты от "взлома", FSG, согласно прилагаемой документации, имеет в себе нечто полиморфно-шифрующее (впрочем, он создавался не для этого), WinUPACK - первоначально считался неплохим протектором, но проект закрыт, все использованные в нём приёмы морально устарели. В общем, ни одним из этих упаковщиков защитить свою программу нельзя, так как это именно упаковшики, а не протекторы, для всех этих трёх упаковщиков существуют программы для автоматической распаковки (+UPX сам распаковывает упакованные им программы).
Неизвестный
11.01.2009, 18:14
общий
Большое спасибо!)))
Источники описывающие эти методы на русском языке????
И еще один вопрос: какой из упаковщиков (UPX, FSG, UPACK) в какую часть PE файла внедряет код своего распаковщика?
Неизвестный
12.01.2009, 15:09
общий
Гм.
На русском языке что-то никогда такие вещи не встречал. И не думаю, что в ближайшем времени появится.
Единственное, что могу подсказать (наверно, вы и так знаете), LZMA - это LZ77 + цепи Маркова, по отдельности их можно глянуть тут (нашёл в запасниках), ещё LZ77 хорошо здесь.
Вообще, относительно перспективными считаются арифметическое сжатие и сжатие, основанное на цепях Маркова.
Касаясь именно этих трёх упаковщиков нельзя сказать, что они куда-то внедряют код своего распаковщика.
На самом деле создаётся _новый_ exe-файл, который, запустившись, в памяти "превращает" себя в оригинальный, как будто бы он (оригинал) и был запущен в память.
А именно... сжатый файл представляет из себя приблизительно следующее:
1) минимально необходимый PE-заголовок.
1.5) возможные ресурсы.
2) секция - код распаковщика/протектора.
2.5) возможные ресурсы (если раньше не было).
3) одна-несколько секций данных (то есть _не_кода_), которые распаковщик использует по своему усмотрению (то есть, именно их он и распаковывает, превращая в загруженный в память оригинальный файл).
Небольшой нюанс №1 - упаковка секции ресурсов не всегда возможна (но если возможно, паковщики обычно её так же "прячут" куда-то в служебные секции сжатого файла, оставляя снаружи (или дублируя) минимально необходимое данные (например, иконку, манифест и др.)).
Небольшой нюанс №2 - каждый мало-мальски уважающий себя протектор "играется" с таблицей импорта с целью затруднения последующего взлома.
Небольшой нюанс №3 - каждый PE-файл может иметь неограниченное количество секций кода. Обычно пакеры оставляют только одну (свою) исполняемую секцию (например, UPX v1.24 вообще делал всего три секции - оставлял ресурсы, одну свою кода, одну свою данных).
Неизвестный
12.01.2009, 17:51
общий
Спасибо!
К сожалению Ваш файл http://rusfaq.ru/upload/1349 у меня отображается как-то криво. Что делать?
Форма ответа