Executable compression
This article needs additional citations for verification. (November 2011) |
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[1] | )Proprietary | Yes |
Armadillo | 9.62 (June 7, 2013 | )Proprietary | Yes |
ASPack | 2.29 (August 3, 2011 | )Proprietary | ? |
ASPR (ASProtect) | 1.64 (September 1, 2011 | )Proprietary | ? |
BoxedApp Packer | 2.2 (June 16, 2009[2] | )Proprietary | Yes |
CExe | 1.0b (July 20, 2001 | )GPL | No |
dotBundle | 1.3 (April 4, 2013[3] | )Proprietary | Yes |
Enigma Protector | 3.80 (August 2, 2012[4] | )Proprietary | Yes |
EXE Bundle | 3.11 (January 7, 2011[5] | )Proprietary | ? |
EXE Stealth | 4.14 (June 29, 2011[6] | )Proprietary | ? |
eXPressor | 1.8.0.1 (January 14, 2010 | )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 | )Freeware | Yes |
Obsidium | 1.5 (March 19, 2014[7] | )Proprietary | Yes |
PELock | 1.0.694 (January 23, 2012[8] | )Proprietary | No |
PESpin | 1.33 (May 3, 2011 | )Freeware | Yes |
RLPack Basic | 1.21 (October 31, 2008 | )GPL | No |
Smart Packer Pro | 1.9.2 (July 14, 2013 | )Proprietary | Yes |
Themida | 2.2.8.0 (March 18, 2014 | )Proprietary | Yes |
UPX | 3.09 (February 18, 2013 | )GPL | experimental |
VMProtect | 2.1 (September 26, 2011 | )Proprietary | Yes |
XComp/XPack | 0.98 (February 18, 2007 | )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
CLI assembly files
- .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
- ^ http://www.pelock.com/products/netshrink/download
- ^ http://boxedapp.com/blog/category/boxedapp-packer-release
- ^ http://www.dotbundle.com/download.html
- ^ http://www.enigmaprotector.com/en/downloads/changelog64.html
- ^ http://webtoolmaster.com/news.xml
- ^ http://webtoolmaster.com/news.xml
- ^ http://obsidium.de/show/download
- ^ http://www.pelock.com/products/pelock/download