чем сжать exe файл
Сравнение популярных упаковщиков
Обычно упакованная программа загружается быстрее, чем неупакованная, что объясняется уменьшением ее размера. Однако многие алгоритмы декомпрессии требуют немало оперативной памяти. Если ее в системе не хватает, то запускаемая программа может быть помещена в файл подкачки. В этом случае сжатое приложение будет открываться дольше.
Где находят применение упаковщики, или, как их часто называют, пакеры? Конечно, их используют программисты, чтобы уменьшить размер написанных файлов, ускорить их запуск и защитить от взлома. Но и крекеры (взломщики) не обходят эти программы стороной, создавая декомпрессоры для популярных упаковщиков и внося, таким образом, свою лепту в развитие технологий защиты данных. 🙂 Что касается обычных пользователей, то упаковщик всегда поможет переслать исполняемый файл по почте, разместить в интернете или записать на информационный носитель небольшой емкости, например, дискету. Процедура распаковки занимает считанные байты, поэтому упакованные exe-файлы имеют почти такой же размер, что и заархивированные, однако, как вы понимаете, не требуют для запуска дополнительного ПО, что тоже удобно.
Чтобы определить, в каких случаях и какими программами лучше пользоваться, я предлагаю провести сравнительный анализ. Итак, в сегодняшнем шоу принимают участие следующие известные пакеры.
Распространение: shareware (14 дней опробования)
Распространение: shareware (30 дней опробования)
Подготовка к тестированию
Для качественного сравнения работы программ-упаковщиков были выбраны (случайным образом) исполняемые файлы (.exe) и динамически подсоединяемые библиотеки (.dll) известных приложений, а также мои программы, написанные в Delphi и Visual C++. Сравнение будет проходить по следующим критериям: размер упакованного файла, время компрессии и время декомпрессии, работоспособность файла после сжатия.
По итогам тестирования можно заключить, что все упаковщики справились с предложенной задачей достойно. Самый большой коэффициент сжатия продемонстрировал UPX.
Результаты тестирования упаковщиков | ||||
Файлы | Исходный размер | Размер после упаковки | Время упаковки | Коэффициент сжатия |
PECompact v2.76 | ||||
Delphi.exe | 624 Kb | 261 Kb | 2 c | 58% |
C.exe | 234 Kb | 45 Kb | 3 c | 80% |
Test1.exe | 1,7 Mb | 756 Kb | 30 c | 54% |
Test2.exe | 10 Mb | 4 Mb | 10 мин | 62% |
Test1.dll | 1 Mb | 451 Kb | 20 c | 57% |
Test2.dll | 1.5 Mb | 703 Kb | 15 c | 55% |
ASPack v2.12 | ||||
Delphi.exe | 624 Kb | 251 Kb | 10 c | 60% |
C.exe | 234 Kb | 46 Kb | 3 c | 81% |
Test1.exe | 1,7 Mb | 868 Kb | 5 c | 47% |
Test2.exe | 10 Mb | 3,8 Mb | 3 мин | 64% |
Test1.dll | 1 Mb | 960 Kb | 2 c | 10% |
Test2.dll | 1.5 Mb | 739 Kb | 17 c | 53% |
UpxVis v1.8 | ||||
Delphi.exe | 624 Kb | 253 Kb | 8 c | 60% |
C.exe | 234 Kb | 43 Kb | 7 c | 83% |
Test1.exe | 1,7 Mb | 737 Kb | 15 c | 57% |
Test2.exe | 10 Mb | — | — | — |
Test1.dll | 1 Mb | — | — | — |
Test2.dll | 1.5 Mb | — | — | — |
Упаковщики также были опробованы и на обычных установочных файлах, которые каждый из нас запускает по несколько штук в день. В основном, попадались «экзешники», содержащие экстра данные с жестко заданным смещением (оверлей). UPX с такими файлами работать отказался, а для остальных упаковщиков в настройках опять была включена опция «Сохранять оверлей». PECompact с компрессией справился нормально: программы загружались, но степень сжатия была незначительная. ASPack, напротив, только угробил «экзешники». Вывод: инсталляционные файлы программ упаковывать нет смысла, т.к. они, во-первых, плохо поддаются упаковке и, во-вторых, уже сжаты разработчиками.
Упаковщик UPX с оболочкой UpxVis показал наилучшее сжатие исполняемых файлов (.exe). Учитывая то, что программа распространяется бесплатно, можно сказать, что для упаковки «экзешников» целесообразнее применять именно ее. Если UPX что-то не сможет сделать хорошо, то он вам об этом непременно сообщит. Для сжатия dll и файлов с оверлеем (не установочных!) лучше использовать ASPack, т.к. он работает надежнее и быстрее. Я, скорее всего, выберу именно его. А PECompact подкупает лишь возможностью выбора кодеков, с которыми можно поэкспериментировать на досуге. Он сжимает почти так же, как и ASPack, только иногда тратит на это больше времени.
Документация / Программы
Последняя модификация: 15.02.2018 г
Утилиты сжатия исполняемых файлов.
Утилиты сжатия исполняемых файлов, позволяют сжимать драйвера и программы так, что их запуск не требует предварительной распаковки. Принцип их действия аналогичен действию обычных архиваторов: сжимаемая программа снабжается SFX-заголовком, который при запуске, распаковывает ее в память и передает ей управление – поэтому разработчики архиваторов, зачастую являются и разработчиками утилит сжатия программ. Примером тому случат архиватор PkZip и утилита PkLite, архиватор Ain и утилита AinExe, Архиватор Uc и утилита UcExe. Однако механизм действия утилит сжатия программ несколько иной – одно дело распаковать на диск, другое дело распаковать в память, да так, чтобы программа себя нашла. Тут требуется и большая квалификация, и большая изобретательность. Поэтому они не так многочисленны как обычные архиваторы.
Различные типы программ имеют различную структуру. Устройство Com-файла существенно отличается от устройства Exe-файла. При этом Exe-файлы и сами не однородны. Они делятся на 32-битные программы для Windows, 16-битные программы для Windows и программы для DOS. Для каждой из этих структур используется собственный алгоритм сжатия и утилиты, обрабатывающие одни типы, могут не признавать другие. В частности, утилиты предназначенные для упаковки программ DOS, не сжимают программы Windows, и наоборот.
Кроме того, exe-файлы могут содержать, так называемые, оверлейные данные – данные, не считываемые в память при загрузке программы, а загружаемые только по мере необходимости. В зависимости от метода присоединения оверлеев и их назначения, содержащая их программа, после сжатия, частично или полностью может потерять работоспособность. В основном используется наиболее простой механизм прямого считывания данных по их физическому размещению в файле программы. После сжатия этот механизм не работает, поскольку данные меняют адресацию и, загрузчик оверлеев не находит их на прежнем месте. Иногда используется более интеллектуальный метод поиска оверлеев по специальным меткам, позволяющий корректно загружать оверлеи, даже если они были перемещены. Использующие его программы не теряют работоспособность и после сжатия, но разработчики программ редко об этом заботятся. В любом случае, основная масса утилит сжатия распознает оверлеи и выдает запрос на выполнение операции.
Существует три варианта обработки программ с оверлеями: отказаться от сжатия подобных программ, присоединить оверлеи к телу программы в несжатом виде или удалить оверлейные данные.
Первый метод применяется к программам, упрямо пытающимся загружать оверлеи по физическим адресам их былого расположения. Второй применим к программам с «интеллектуальным» оверлейным механизмом. Третий применим в том случае, если оверлеи содержат несущественные данные типа экранов справки или отладочной информации, почему-то не удаленной разработчиками – такие программы будут работать как раньше, хотя перестанут выдавать справку и не смогут корректироваться с помощью программ типа Debug.
Сжатые программы, обычно, можно восстановить в исходном виде, теми же утилитами, которыми они были сжаты. Однако оверлейные программы восстановлению не подлежат. Если оверлейная информация при сжатии была удалена, при восстановлении она не появится из «ни откуда», хотя программа не потеряет работоспособность. Если же информация была присоединена в виде несжатого блока, утилиты сжатия не в силах ее отделить и добавить к распакованному основному модулю, поэтому, они либо вообще отказываются ее восстанавливать, либо «восстановленная» программа оказывается безнадежно испорченной.
Однако сжатие программ производится не для того чтобы их, потом, разжимать.
Среди утилит сжатия наиболее примечательны следующие:
Diet.exe 1.45f – утилита, обеспечивающая один из лучших коэффициентов сжатия для Com-файлов, сжимающая Exe-файлы для DOS, драйвера и файлы данных (при этом, доступ к сжатым данным обеспечивается, если Diet установлен в память резидентно и обрабатывает их подобно DblSpace или ZipMagic – в этом режиме могут использоваться даже неподатливые программы с оверлеями).
AvPack.exe – утилита, иногда превосходящая Diet в области сжатия Com-файлов и часто превосходящая его в области сжатия Exe-файлов под DOS. Распаковывает файлы не только собственной упаковки, но и файлы, обработанные LzExe (при чем, качественней чем, специально для этого разработанные, программы UpackExe и UnLzExe), а так же некоторыми версиями PkLite и ExePack. Позволяет добавлять оверлеи к сжатым модулям.
PkLite.exe (версии 2.0 и выше) – утилита, имеющая много возможностей, сжимающая не только программы для DOS, но и 16-битные программы для Windows (при этом, программы Windows восстановлению не подлежат). Владеет распаковкой файлов обработанных LzExe и ExePack. Позволяет добавлять оверлеи к сжатым модулям.
UcExe.exe – утилита, которая, не смотря на создание заголовка-распаковщика, не уступает в сжатии Zip-архиватору. Однако, Com-файлы превращаются в Exe, что не всегда корректно работает и не восстановимо. Позволяет добавлять оверлеи к сжатым модулям; для переупаковки файлов обработанных ExePack или LzExe вызывает утилиту UpackExe.
Apack.exe – сжимает даже сильнее чем UcExe, позволяя сэкономить порядка пятидесяти килобайт на каждом мегабайте (в сравнении с UcExe), однако обработанные ей программы для своего выполнения требуют больше памяти (это легко обнаружить для резидентных программ, запустив программу Mem.exe и для некоторых нерезидентных программ, имеющих датчики памяти, например, архиватора Rar).
AsPack.exe – утилита сжатия 32-битных программ Windows, встраивающаяся в контекстное меню и, кроме массы возможностей и удобного интерфейса, имеющая юмористический перевод на русский язык. Однако, сжатые ей программы (как, очевидно и любые сжатые ресурсы Windows), восстановлению не подлежат.
Com2exe.exe (или ComToExe) – не вполне утилита сжатия, поскольку ничего не сжимает, но иногда она применяется для преобразования Com-файла в Exe-файл, для последующей его обработки программами, сжимающими только Exe-файлы (например LzExe.exe – самой первой программы этого класса). Такое преобразование не всегда корректно, поскольку изменение заголовка программы не меняет ее структуры (например, Volkov Commander, преобразованный ей в Exe-файл и сжатый утилитой AinExe.exe, при попытке загрузить его в верхнюю память, приводит к зависанию компьютера), но обычно, вполне приемлемо.
Cup386.com – не является утилитой сжатия, зато, аналогично программе DrWeb (но с большими возможностями), восстанавливает запакованные файлы, загружая их в память и прослеживая их поведение при выполнении. Такое восстановление не вполне корректно, поскольку использует не строгий механизм распаковки, заложенный в программах-упаковщиках, а эвристический анализ и, зачастую, вытаскивает из памяти немного мусора. По этому, оправданно только при отсутствии оригинального упаковщика или, если тот, по каким-то причинам (например, помимо упаковки файл зашифровывался), с этой работой не справляется. То же касается программы DrWed.exe и других универсальных распаковщиков.
Примеры применения упаковщиков.
Программа | Исходный размер | Примененная утилита | Полученный размер | Степень сжатия |
---|---|---|---|---|
Драйвер языка и клавиатуры KeyRus.com | 22,714 Кб | AvPack.exe | 12,224 Кб | 46% |
Программа взаимодействия с CDROM Mscdex.exe (с оверлеями) | 25,473 Кб | AvPack.exe | 18,166 Кб | 28% |
Драйвер памяти HiMem.sys | 33,191 Кб | Diet.exe | 11,227 Кб | 66% |
Программа проверки и исправления ошибок диска DmDos.exe | 213,488 Кб | UcExe.exe | 83,189 Кб | 61% |
Редактор WinWord.exe | 8,441 907 Мб | AsPack.exe | 4,366 336 Мб | 48% |
При современных размерах жестких дисков сжатие программ не дает заметной экономии места, но оно может потребоваться для умещения всех необходимых программ на загрузочную дискету или для усложнения прямого доступа к коду программы из двоичных или шестьнадцатиричных редакторов.
Заинтересованные, могут скачать набор упаковщиков про указанной ссылке:
Размер в архиве – 390,058 Байт.
Советы и секреты №3
Как сжать Windows 10 и освободить место. Самый удобный аудио- и видеотранскодер под Windows, Mac и Linux. Аналог GitHub для внутреннего использования
Compact OS освобождает минимум 2 ГБ места на диске. Не так уж и много, но на небольших SSD-накопителях это заметно.
Программа работает из командной строки с привилегиями администратора. Это значит, что после запуска cmd.exe следует нажать комбинацию клавиш Ctrl+Shift+Enter.
Перед началом сжатия Windows 10 есть смысл узнать, принесёт ли эта процедура результат, отличный от нулевого. Возможно, система уже находится в сжатом состоянии, так что дополнительных процедур не требуется. Чтобы определить текущее состояние бинарников ОС, запускаем следующую команду:
Команда покажет информацию о текущем состоянии: сколько файлов сжато или не сжато, уровень компрессии, сколько конкретно байт находится в контейнере сжатых файлов. Если уровень компрессии близок к 1.0, то использование программы будет эффективно.
В определённых условиях система в сжатом состоянии может немного снизить производительность, но на большинстве компьютеров это будет незаметно. Имейте в виду, что всегда есть возможность вернуть файлы в обычное состояние, если заметите какие-то проблемы с производительностью. В любом случае, перед сжатием системных файлов рекомендуется сделать резервную копию.
Для проведения процедуры нужно запустить следующую команду:
Сжатие всех файлов должно занять несколько минут, хотя на некоторых системах может занять 20 или более минут. На последнем Insider Build освобождается более 2 ГБ.
Для возвращения системы в исходное состояние:
Удобная и бесплатная программа, которая конвертирует аудио- и видеофайлы в разные форматы
Есть несколько программ, которые соответствуют главным требованиям:
Handbrake работает под Windows, Mac и Linux. Последней версией под Windows на данный момент является 0.10.5.
В качестве исходного материала принимается практически любой мультимедийный файл (или папка с файлами), диск DVD или BlueRay, если там нет защиты от копирования.
Программу удобно использовать, чтобы перекодировать DVD или скачанный файл для просмотра на другом устройстве, кроме ПК. В Handbrake встроены профили кодирования для следующих устройств:
Похожую функциональность обеспечивает ещё одна свободная программа WinFF, которая как будто ориентирована на пользователей Linux (см. список дистрибутивов), хотя есть версии под Windows от Windows 95 до Windows 8. Для неё разработаны интерфейсы на русском, украинском и многих других языках.
Какой выбрать бесплатный VPN
Для анонимной работы в интернете и обхода государственной цензуры (блокировка сайтов) удобно использовать бесплатный VPN. Одним из самых популярных вариантов является FreeOpenVPN (через клиентское приложение OpenVPN).
Кстати, 31 июля 2016 года вышел Kaspersky Internet Security 2017 (популярный в России антивирус), в состав которого включён VPN-клиент. В бесплатном режиме он работает только через сервера в России и позволяет передавать 200 МБ в сутки. Конечно, это довольно убогое предложение, но если у вас уже установлен KIS 2017, то такой вариант следует иметь в виду. Только пользователям KIS не следует активировать функцию платного VPN в программе, потому что существует множество бесплатных альтернатив.
Альтернатива GitHub для собственного хостинга
Отличный выбор для self-hosted GitHub — GitLab. Совместная разработка в собственном рабочем коллективе, на собственном сервере. Поддерживается система контроля версий Git, SSH-доступ, разграничение прав доступа, пулл-реквесты, работа с тикетами (открытие, комментирование, закрытие), поиск и т.д. Отличный веб-интерфейс, через который осуществляется администрирование репозиториев.
Демо
GitLab — разумное предложение для компаний, которые не хотят выкладывать исходный код в открытый доступ в процессе разработки.