Nmap Development mailing list archives

compressing nmap executables and dlls with upx


From: "DePriest, Jason R." <jrdepriest () gmail com>
Date: Mon, 4 Feb 2008 23:54:06 -0600

You can get some pretty impressive compression ratios.  I just
compressed the files for my Windows installation.

Any possibility this could be used for the official Windows installer
to make it quite a bit smaller?  I don't know if NSIS uses LZMA or
not, but that is what I asked UPX to use.

The dlls went from 16,084,480 bytes to 6,462,976 bytes.

The exes went from 2,469,724 bytes to 1,531,228 bytes.  Not as
impressive as the dlls, but still not bad.

Just a thought... anyway, here are the compression details.

Jason@FROG-POND /cygdrive/c/Program Files/Nmap
$ find . -type f -name '*.dll' -print0 | xargs -0
/cygdrive/f/Tools/upx/3.02/upx -9 -v --lzma
                       Ultimate Packer for eXecutables
  Copyright (C) 1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007
UPX 3.02w       Markus Oberhumer, Laszlo Molnar & John Reiser   Dec 16th 2007

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
     57344 ->     23552   41.07%    win32/pe     bit.dll
     28672 ->     10752   37.50%    win32/pe     asprintf.dll
     67584 ->     36864   54.55%    win32/pe     bzip2.dll
     24576 ->      7168   29.17%    win32/pe     charset.dll
    443904 ->    195584   44.06%    win32/pe     freetype6.dll
     69632 ->     25600   36.76%    win32/pe     gettextlib.dll
     24576 ->      8192   33.33%    win32/pe     gettextpo.dll
    114688 ->     50688   44.20%    win32/pe     gettextsrc.dll
    892928 ->    475136   53.21%    win32/pe     iconv.dll
     45056 ->     21504   47.73%    win32/pe     intl.dll
    128512 ->     66560   51.79%    win32/pe     jpeg62.dll
     30720 ->     16384   53.33%    win32/pe     libpixmap.dll
     30208 ->     15872   52.54%    win32/pe     libsvg.dll
     59904 ->     26112   43.59%    win32/pe     libwimp.dll
     19968 ->      8704   43.59%    win32/pe     im-am-et.dll
upx: ./zenmap/lib/gtk-2.0/2.10.0/immodules/im-cedilla.dll:
NotCompressibleException
      8192 ->      7168   87.50%    win32/pe     im-cyrillic-translit.dll
     16896 ->     10752   63.64%    win32/pe     im-ime.dll
      8704 ->      7168   82.35%    win32/pe     im-inuktitut.dll
upx: ./zenmap/lib/gtk-2.0/2.10.0/immodules/im-ipa.dll: NotCompressibleException
     11776 ->      8704   73.91%    win32/pe     im-thai.dll
     19968 ->      8704   43.59%    win32/pe     im-ti-er.dll
     19968 ->      8704   43.59%    win32/pe     im-ti-et.dll
      8192 ->      7168   87.50%    win32/pe     im-viqr.dll
     14848 ->     10752   72.41%    win32/pe     libpixbufloader-ani.dll
     15360 ->     11776   76.67%    win32/pe     libpixbufloader-bmp.dll
     26112 ->     15360   58.82%    win32/pe     libpixbufloader-gif.dll
     13312 ->     10752   80.77%    win32/pe     libpixbufloader-ico.dll
     14848 ->     10752   72.41%    win32/pe     libpixbufloader-jpeg.dll
     12288 ->      9216   75.00%    win32/pe     libpixbufloader-pcx.dll
     15360 ->     10752   70.00%    win32/pe     libpixbufloader-png.dll
     12800 ->     10240   80.00%    win32/pe     libpixbufloader-pnm.dll
upx: ./zenmap/lib/gtk-2.0/2.10.0/loaders/libpixbufloader-ras.dll:
NotCompressibleException
     13312 ->     10752   80.77%    win32/pe     libpixbufloader-tga.dll
     14336 ->      9728   67.86%    win32/pe     libpixbufloader-tiff.dll
upx: ./zenmap/lib/gtk-2.0/2.10.0/loaders/libpixbufloader-wbmp.dll:
NotCompressibleException
     10752 ->      8704   80.95%    win32/pe     libpixbufloader-xbm.dll
     25088 ->     14848   59.18%    win32/pe     libpixbufloader-xpm.dll
upx: ./zenmap/lib/gtk-2.0/2.10.0/loaders/svg_loader.dll:
NotCompressibleException
     33792 ->     17408   51.52%    win32/pe     libmetal.dll
     29696 ->     15872   53.45%    win32/pe     libpixmap.dll
     11776 ->      9216   78.26%    win32/pe     libredmond95.dll
     49664 ->     22528   45.36%    win32/pe     libwimp.dll
     19968 ->      8704   43.59%    win32/pe     im-am-et.dll
upx: ./zenmap/lib/gtk-2.0/2.4.0/immodules/im-cedilla.dll:
NotCompressibleException
      8192 ->      7168   87.50%    win32/pe     im-cyrillic-translit.dll
     16896 ->     10752   63.64%    win32/pe     im-ime.dll
      8704 ->      7168   82.35%    win32/pe     im-inuktitut.dll
upx: ./zenmap/lib/gtk-2.0/2.4.0/immodules/im-ipa.dll: NotCompressibleException
      7680 ->      7168   93.33%    win32/pe     im-thai-broken.dll
     19968 ->      8704   43.59%    win32/pe     im-ti-er.dll
     19968 ->      8704   43.59%    win32/pe     im-ti-et.dll
      8192 ->      7168   87.50%    win32/pe     im-viqr.dll
     14848 ->     10752   72.41%    win32/pe     libpixbufloader-ani.dll
     13824 ->     10752   77.78%    win32/pe     libpixbufloader-bmp.dll
     26112 ->     15360   58.82%    win32/pe     libpixbufloader-gif.dll
     13824 ->     10752   77.78%    win32/pe     libpixbufloader-ico.dll
     14848 ->     10752   72.41%    win32/pe     libpixbufloader-jpeg.dll
     12288 ->      9216   75.00%    win32/pe     libpixbufloader-pcx.dll
     15360 ->     10752   70.00%    win32/pe     libpixbufloader-png.dll
     13824 ->     10240   74.07%    win32/pe     libpixbufloader-pnm.dll
upx: ./zenmap/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-ras.dll:
NotCompressibleException
     13312 ->     10752   80.77%    win32/pe     libpixbufloader-tga.dll
     11776 ->      9216   78.26%    win32/pe     libpixbufloader-tiff.dll
      8704 ->      7680   88.24%    win32/pe     libpixbufloader-wbmp.dll
     10752 ->      8704   80.95%    win32/pe     libpixbufloader-xbm.dll
     25600 ->     14848   58.00%    win32/pe     libpixbufloader-xpm.dll
     12800 ->      9216   72.00%    win32/pe     pango-arabic-fc.dll
     10752 ->      8704   80.95%    win32/pe     pango-basic-fc.dll
      8704 ->      7680   88.24%    win32/pe     pango-basic-win32.dll
     13312 ->      9728   73.08%    win32/pe     pango-hangul-fc.dll
     13824 ->      9728   70.37%    win32/pe     pango-hebrew-fc.dll
     25600 ->     13312   52.00%    win32/pe     pango-indic-fc.dll
     11264 ->      8704   77.27%    win32/pe     pango-khmer-fc.dll
     12288 ->      9216   75.00%    win32/pe     pango-syriac-fc.dll
     19456 ->     10752   55.26%    win32/pe     pango-thai-fc.dll
     10752 ->      8192   76.19%    win32/pe     pango-tibetan-fc.dll
     12288 ->      9216   75.00%    win32/pe     pango-arabic-fc.dll
upx: ./zenmap/lib/pango/1.6.0/modules/pango-arabic-lang.dll:
NotCompressibleException
     10240 ->      8704   85.00%    win32/pe     pango-basic-fc.dll
     16384 ->     11264   68.75%    win32/pe     pango-basic-win32.dll
     14336 ->     10240   71.43%    win32/pe     pango-hangul-fc.dll
     13312 ->      9728   73.08%    win32/pe     pango-hebrew-fc.dll
     26624 ->     13824   51.92%    win32/pe     pango-indic-fc.dll
      7680 ->      7168   93.33%    win32/pe     pango-indic-lang.dll
     11776 ->      8704   73.91%    win32/pe     pango-khmer-fc.dll
     12288 ->      9216   75.00%    win32/pe     pango-syriac-fc.dll
     19456 ->     10752   55.26%    win32/pe     pango-thai-fc.dll
     11264 ->      8192   72.73%    win32/pe     pango-tibetan-fc.dll
     91648 ->     50688   55.31%    win32/pe     libart_lgpl_2-2.dll
    112640 ->     37888   33.64%    win32/pe     libatk-1.0-0.dll
    412672 ->    178176   43.18%    win32/pe     libcairo-2.dll
    214528 ->     79872   37.23%    win32/pe     libcroco-0.6-3.dll
    194048 ->     89088   45.91%    win32/pe     libfontconfig-1.dll
    443904 ->    195584   44.06%    win32/pe     libfreetype-6.dll
    569344 ->    227840   40.02%    win32/pe     libgdk-win32-2.0-0.dll
    274432 ->     97280   35.45%    win32/pe     libgdkglext-win32-1.0-0.dll
     86528 ->     40960   47.34%    win32/pe     libgdk_pixbuf-2.0-0.dll
     87040 ->     34304   39.41%    win32/pe     libglade-2.0-0.dll
    656896 ->    222208   33.83%    win32/pe     libglib-2.0-0.dll
     14848 ->     10240   68.97%    win32/pe     libgmodule-2.0-0.dll
    221184 ->     86016   38.89%    win32/pe     libgobject-2.0-0.dll
    173056 ->     72192   41.72%    win32/pe     libgsf-1-114.dll
     10752 ->      8192   76.19%    win32/pe     libgsf-win32-1-114.dll
     18432 ->     11776   63.89%    win32/pe     libgthread-2.0-0.dll
   3810304 ->   1178112   30.92%    win32/pe     libgtk-win32-2.0-0.dll
     10752 ->      8704   80.95%    win32/pe     libgtkglext-win32-1.0-0.dll
    243712 ->     96768   39.71%    win32/pe     libpango-1.0-0.dll
     39936 ->     18944   47.44%    win32/pe     libpangocairo-1.0-0.dll
    184320 ->     71680   38.89%    win32/pe     libpangoft2-1.0-0.dll
     43008 ->     23040   53.57%    win32/pe     libpangowin32-1.0-0.dll
    145920 ->     72704   49.82%    win32/pe     libpng12.dll
    203264 ->     90112   44.33%    win32/pe     libpng13.dll
     25088 ->     15872   63.27%    win32/pe     libpopt-0.dll
    183296 ->     74240   40.50%    win32/pe     librsvg-2-2.dll
    360448 ->    112128   31.11%    win32/pe     libtiff3.dll
   1291264 ->    496640   38.46%    win32/pe     libxml2.dll
    348160 ->    157184   45.15%    win32/pe     msvcr71.dll
   2113536 ->    747008   35.34%    win32/pe     python25.dll
    260096 ->    119808   46.06%    win32/pe     sqlite3.dll
     53248 ->     25600   48.08%    win32/pe     xmlparse.dll
     81920 ->     23040   28.13%    win32/pe     xmltok.dll
     59904 ->     35840   59.83%    win32/pe     zlib1.dll
   --------------------   ------   -----------   -----------
  16084480 ->   6462976   40.18%                 [ 114 files ]

Packed 123 files: 114 ok, 9 errors.

Jason@FROG-POND /cygdrive/c/Program Files/Nmap
$ find . -type f -name '*.exe' -print0 | xargs -0
/cygdrive/f/Tools/upx/3.02/upx -9 -v --lzma
                       Ultimate Packer for eXecutables
  Copyright (C) 1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007
UPX 3.02w       Markus Oberhumer, Laszlo Molnar & John Reiser   Dec 16th 2007

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
   1335808 ->    415232   31.08%    win32/pe     nmap.exe
     53647 ->     41359   77.09%    win32/pe     Uninstall.exe
upx: ./zenmap/w9xpopen.exe: NotCompressibleException
   1080269 ->   1074637   99.48%    win32/pe     zenmap.exe
   --------------------   ------   -----------   -----------
   2469724 ->   1531228   62.00%                 [ 3 files ]

Packed 4 files: 3 ok, 1 error.

_______________________________________________
Sent through the nmap-dev mailing list
http://cgi.insecure.org/mailman/listinfo/nmap-dev
Archived at http://SecLists.Org


Current thread: