The UPX executable packer works reasonably well on GHC-compiled programs (7.6.3, ELF x86-64):
$ upx --best hello-world
Ultimate Packer for eXecutables
Copyright (C) 1996 - 2011
UPX 3.08 Markus Oberhumer, Laszlo Molnar & John Reiser Dec 12th 2011
File size Ratio Format Name
-------------------- ------ ----------- -----------
1133761 -> 314008 27.70% linux/ElfAMD hello-worldThe failure mode before and after compression when libgmp is missing is identical, which is good. Compression does not obfuscate errors, even though ldd can no longer detect the shared libraries.
$ ./hello-world
./hello-world: error while loading shared libraries: libgmp.so.10: cannot open shared object file: No such file or directory
$ ldd ./hello-world
not a dynamic executable
Packing executables is in general an interesting problem. Any other type of file that is read, we can insert a uncompression program as a pipe. However, executing is a bit more magical than just reading.
No comments :
Post a Comment