Jump to content

Executable compression

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by 85.107.75.247 (talk) at 10:34, 13 September 2014 (Advantages and disadvantages). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Executable compression is any means of compressing an executable file and combining the compressed data with decompression code into a single executable. When this compressed executable is executed, the decompression code recreates the original code from the compressed code before executing it. In most cases this happens transparently so the compressed executable can be used in exactly the same way as the original. Executable compressors are often referred to as "runtime packers", "software packers", "software protectors" (or even "polymorphic packers" and "obfuscating tools").

A compressed executable can be considered a self-extracting archive, where compressed data is packaged along with the relevant decompression code in an executable file. Some compressed executables can be decompressed to reconstruct the original program file without being directly executed. Two programs that can be used to do this are CUP386 and UNP.

Most compressed executables decompress the original code in memory and most require slightly more memory to run (because they need to store the decompressor code, the compressed data and the decompressed code). Moreover, some compressed executables have additional requirements, such as those that write the decompressed executable to the file system before executing it.

Executable compression is not limited to binary executables, but can also be applied to scripts, such as JavaScript. Because most scripting languages are designed to work on human-readable code, which has a high redundancy, compression can be very effective and as simple as replacing long names used to identify variables and functions with shorter versions and/or removing white-space.

List of packers

Note: Clients in purple are no longer in development.

Name Latest stable Software license x86-64 support
.netshrink 2.6 (April 3, 2014 (2014-04-03))[1] Proprietary Yes
Armadillo 9.62 (June 7, 2013 (2013-06-07)) Proprietary Yes
ASPack 2.29 (August 3, 2011 (2011-08-03)) Proprietary ?
ASPR (ASProtect) 1.64 (September 1, 2011 (2011-09-01)) Proprietary ?
BoxedApp Packer 2.2 (June 16, 2009 (2009-06-16))[2] Proprietary Yes
CExe 1.0b (July 20, 2001 (2001-07-20)) GPL No
dotBundle 1.3 (April 4, 2013 (2013-04-04))[3] Proprietary Yes
Enigma Protector 3.80 (August 2, 2012 (2012-08-02))[4] Proprietary Yes
EXE Bundle 3.11 (January 7, 2011 (2011-01-07))[5] Proprietary ?
EXE Stealth 4.14 (June 29, 2011 (2011-06-29))[6] Proprietary ?
eXPressor 1.8.0.1 (January 14, 2010 (2010-01-14)) Proprietary ?
FSG 2.0 (Unknown) Freeware No
kkrunchy src 0.23a4 (Unknown) BSD No
MEW 1.1 (Unknown) Freeware No
MPRESS 2.19 (January 2, 2012 (2012-01-02)) Freeware Yes
Obsidium 1.5 (March 19, 2014 (2014-03-19))[7] Proprietary Yes
PELock 1.0.694 (January 23, 2012 (2012-01-23))[8] Proprietary No
PESpin 1.33 (May 3, 2011 (2011-05-03)) Freeware Yes
RLPack Basic 1.21 (October 31, 2008 (2008-10-31)) GPL No
Smart Packer Pro 1.9.2 (July 14, 2013 (2013-07-14)) Proprietary Yes
Themida 2.2.8.0 (March 18, 2014 (2014-03-18)) Proprietary Yes
UPX 3.09 (February 18, 2013 (2013-02-18)) GPL experimental
VMProtect 2.1 (September 26, 2011 (2011-09-26)) Proprietary Yes
XComp/XPack 0.98 (February 18, 2007 (2007-02-18)) Freeware No
  • PackWin
  • WinLite

OS/2 executable

  • NeLite
  • LxLite

DOS executable

  • 32LiTE
  • 624
  • AINEXE
  • aPACK
  • DIET
  • HASP Envelope
  • LGLZ
  • LZEXE (by Fabrice Bellard) – First widely publicly used executable compressor for microcomputers.
  • PKLite
  • PMWLITE
  • UCEXE
  • UPX
  • WDOSX
  • WWpack
  • XE

ELF files

  • gzexe
  • HASP Envelope
  • UPX
  • .NETZ
  • NsPack
  • Mpress
  • HASP Envelope
  • .netshrink
  • dotBundle
  • Exepack.NET
  • DotProtect: Commercial protector/packer for .net and mono. Features on-line verifications and "industry standard encryption".

Mach-O (Apple Mac OS X) files

  • HASP Envelope
  • UPX
  • VMProtect

JAR files

  • HASP Envelope
  • pack200

WAR files

  • HASP Envelope

JavaScript scripts

There are two types of compression that can be applied to scripts:

  • Reduce the redundancy in the script (by removing comments, white space and shorten variable and functions names). This does not alter the behavior of the script.
  • Compress the original script and create a new script that contains decompression code and compressed data. This is similar to binary executable compression.

Self decompressing compressors

These compress the original script and output a new script that has a decompressor and compressed data.

Redundancy reducing compressors

These remove white space, remove comments, and shorten variable and function names but do not alter the behavior of the script.

See also

References