Страница 1 из 1
Сжатие exe и DLL
Добавлено: 28 мар 2007, 14:09
Yura_ua
Я пользуюсь програмкой ASPack. Работает она примерно так: сначала весь код программы сжимается архиватором.После этого в конец сжатого кода добавляется код разархиватора, который будет программу разжимать обратно. И в самом конце ASPack изменяет заголовок исполняемого файла так, чтобы при старте сначала запускался разархиватор.
Можно ли отобразить процес разжатия кода с помощью ProgressBar?
Re: Сжатие exe и DLL
Добавлено: 29 мар 2007, 14:13
SergeyS
А зачем вообще сжимать программы? Я читал ряд тестов проделанных на подобных программах (в частности использовали Excel и Word), так уменьшение программы на диске на 10Мб приводит к значительному увеличению занимаемой памяти в оперативке. Точных цифр не скажу, но весьма существенно.
Что тебе дороже, 1Мб диска или 1Мб оперативки?
Re: Сжатие exe и DLL
Добавлено: 29 мар 2007, 14:32
Yura_ua
Больше памяти в оперативке занимается только пока зжатая прога разжимается, на что уходит не так уж много времени. Если exe-шник весит пару метров, то сжать его на 30-70% очень даже полезно.
Re: Сжатие exe и DLL
Добавлено: 29 мар 2007, 15:29
somewhere
" писал(а):Можно ли отобразить процес разжатия кода с помощью ProgressBar?
для этого нужно обладать информацией, на какой стадии находится процесс распаковки. Думаю кроме самого ASPack никто тебе ее не даст :-)
Еще как варианты:
- Пошариться по декодеру ASPack (а сделать это можно любым дебагером) и найти местечко, где, хотя-бы, берется кусочек данных для распаковки. Где-нить там, убрав ненужные nop или еще что впихнуть вызов API SendMessage (байт 25 понадобиться) с параметром HWND_BROADCAST и в каком нибудь процессе ловить данные и рисовать ProgressBar.
- Подвинуть ASPack и впихнуть туда свой код с созданием формы и прогрессбара, из него вызывать ASPack, в котором есть вызов твоей функции отрисовки (6 байт всего)
- Найти декодер ASPack и юзать как утилу с параметрами в виде пути к файлу exe. Вывод перенаправить в память и следить - что он там пишет - обычно прогресс выводят все утилы.
В итоге: Можно все - но стоит ли оно того?
Re: Сжатие exe и DLL
Добавлено: 29 мар 2007, 17:41
Лелик_1044
Yura_ua писал(а):Больше памяти в оперативке занимается только пока зжатая прога разжимается, на что уходит не так уж много времени. Если exe-шник весит пару метров, то сжать его на 30-70% очень даже полезно.
А зачем тогда тебе прогресс бар если она быстро разжимается? Это лишнее время и гемор
Пользуюсьпрогой довольно давно, но как то не задумывался над этим запускается все быстро и четко работает
Re: Сжатие exe и DLL
Добавлено: 29 мар 2007, 22:59
Yura_ua
Лелик писал(а):А зачем тогда тебе прогресс бар если она быстро разжимается? Это лишнее время и гемор
Просто мой exe-шник очень большой и проходит 5-6 секунд перед тем как появиться окно. Пользователь, у которого машина намного слабее, может подумать что прога вобще не запускается. Вот мне и нужно, чтобы люди знали, что всё работает, только надо подождать.
Re: Сжатие exe и DLL
Добавлено: 29 мар 2007, 23:17
Yura_ua
somewhere писал(а):Думаю кроме самого ASPack никто тебе ее не даст :-)
Ну ладно. А есть у кого-то исходники программ по сжатию-расжатию?
Re: Сжатие exe и DLL
Добавлено: 01 апр 2007, 13:01
SergeyS
" писал(а):Больше памяти в оперативке занимается только пока зжатая прога разжимается, на что уходит не так уж много времени. Если exe-шник весит пару метров, то сжать его на 30-70% очень даже полезно.
Пользователь, у которого машина намного слабее, может подумать что прога вобще не запускается
Почитай информацию здесь, как раз про твой случай:
http://www.citforum.ru/book/cook/exepack.shtml
http://www.podgoretsky.com/ftp/Docs/Mis ... ePack.html