VOGONS

Common searches


First post, by eL_PuSHeR

User metadata
Rank l33t++
Rank
l33t++

Hi, I like to test packers, specially executable packers since the time I met OS/2 Operating System superb support for its LX compression. Hell you could even pack the kernel files because LX compression was supported internally.

Even if modern hard-disks tend to be a lot bigger, there's always a disk cache penalty (you need more space) when caching big executables. If you are lucky enough, they will be probably quite compressible and will load faster. It can serve other purposes like defeat reverse-engineering and the such.

Compressing EXEs (and specially DLLs) can be ill-advised. It is always recommended to have a backup copy of everything and it's highly advisable not to be storing packed copies because packers are constantly evolving. Just pack what you use on a daily basis.

Right now, for Windows, the best packers are UPX 1.25 and Upack 0.24ß

With Upack I have managed to have a DOSBox 0.63 executable of 493KB

If you have a Pentium II+ machine, decompressing time is negligible.
The only drawback is that decompressing may need a little more memory overhead but think on the space saved and shorter loading times.

PS - Wow! SCUMVM.EXE went from 3,02MB to 834KB

Intel i7 5960X
Gigabye GA-X99-Gaming 5
8 GB DDR4 (2100)
8 GB GeForce GTX 1070 G1 Gaming (Gigabyte)

Reply 1 of 10, by MiniMax

User metadata
Rank Moderator
Rank
Moderator

I don't use EXE packers, but I would not mind trying 😀

So - if I understand you correctly, I could try packing say Adobe Acrobat Reader and other downloadable EXE's, because if something goes wrong in the packing/unpacking process, I can always download a fresh copy?

DOSBox 60 seconds guide | How to ask questions
_________________
Lenovo M58p | Core 2 Quad Q8400 @ 2.66 GHz | Radeon R7 240 | LG HL-DT-ST DVDRAM GH40N | Fedora 32

Reply 2 of 10, by Snover

User metadata
Rank l33t++
Rank
l33t++

Executable compression is an excellent idea. I use UPX whenever I output something for general consumption. In any case, compression doesn't damage anything or make it harder if a program is corrupt -- a corrupt program will not run (or will fuck up and die) regardless.

Yes, it’s my fault.

Reply 3 of 10, by HunterZ

User metadata
Rank l33t++
Rank
l33t++

Or fuck up and wipe out your hard drive. I've had it happen before, but a loooong time ago. With modern OSes it's much harder for a program to do something like that by accident.

Reply 4 of 10, by Snover

User metadata
Rank l33t++
Rank
l33t++

A nice thing about UPX-compressed executables is that they will verify their integrity before running (checksum), so if the checksum is wrong they won't run. (Hah! I just said the same thing twice in one sentence!)

Yes, it’s my fault.

Reply 5 of 10, by DosFreak

User metadata
Rank l33t++
Rank
l33t++

What's really nice about executable PE compresses is you can compress anything that's PE. Very nice to get as much space as possible on BartPE.

How To Ask Questions The Smart Way
Make your games work offline

Reply 8 of 10, by eL_PuSHeR

User metadata
Rank l33t++
Rank
l33t++

PE = Portable Executable (the executable format for Win32 exes)
NE = (the executable format for Win16 exes)
LE = Linear Executable? (MS-DOS 32-bit Exes (DOS4GW, DOS32A...)
LX = OS/2?
MZ (Sometimes credited as ZM) = MS-DOS exes.

The two byte values are the first ones in the EXE header used for recognizing EXE type.

Here is a good free PE analyzer

And here is a short list of most known exepackers...

MS-DOS (MZ): Fabrice Bellard's LZEXE, PKLite, WWPack, aPACK, UPX. There are LOTS of them. Best ones are aPACK (for small-medium exes) and UPX (good compression ratios and lots of options). Normally, newer ones yield much better compression ratios.

MS-DOS 32-bit (LE): UPX again seems to be the absolute winner.

OS/2 (LX): LXLite is a well known packer.

Win16 (LE): They are very tricky for packing. Always try them thoroughfully after packing them. I have seen just a few packers for LE being PKLite the most known.

Win32 (PE): There are several packers available. Compressing PEs is an easy and almost safe thing (at least as EXEcutables are concerned). UPX is very good too (and safe), while Dwing UPack yields an astonishing compression ratio, but it's still in ßeta development.

There's is a catch when compressing Win32 DLLs (which are PEs too, also .OCX, .CPL and such can be packed) and is that when you pack a Dynamic Link Library it can't be shared in the same space of memory anymore, so when you use a compressed DLL keep in mind that it will spawn as many copies as needed in memory, taking up more space. Thus, it's recommended to pack just .exe files, not .dll - Not to care if they are small in size, though.

Note on UPX: It can also pack certain "uncommon" executables as Atari ST, C64 and such, commonly used in emulators.

To sum it up: PROs and CONs of executable compression:

PROs: Smaller file sizes make loading times a snap. Also you need less cache memory for storing them. Decompression times are negligible.
Packed executables are more reliable when running (self crc-check) and are harder to reverse-engineering.

CONs: Packed executables take up a little more memory than their unpacked counterparts. Some files need to be unpacked for accessing certain resources (rare) and some of them that perform self-checking routines need to be unpacked (antivir executables are examples).
Virus makers sometimes use not-well-know exe packers/encryptors/scramblers to disguise their evil code from antivirus programs.

Intel i7 5960X
Gigabye GA-X99-Gaming 5
8 GB DDR4 (2100)
8 GB GeForce GTX 1070 G1 Gaming (Gigabyte)

Reply 9 of 10, by priestlyboy

User metadata
Rank Oldbie
Rank
Oldbie

Ah a familiar topic of mine. I've used a variety of packers from the most known like UPX to like ... some unknowns. There is a very popular EXE Packer compression test page somewhere around here.

Um.. Ah, [here] is the page you guys may want to look on for the best PE Compressors. There's a LOT of them, most unknown until I read this page. It's also the most up-to-date page.

Have fun boys
Greets
~Paladinate~

Ieremiou
----------
Helping Debug DOSBox.

Reply 10 of 10, by eL_PuSHeR

User metadata
Rank l33t++
Rank
l33t++

I do not trust the results shown on the comparison test link posted above. Why do they run some packers at default settings while others not? I don't get it.

For UPACK 0.24ß one should use -c6 -f255 parameters.

Intel i7 5960X
Gigabye GA-X99-Gaming 5
8 GB DDR4 (2100)
8 GB GeForce GTX 1070 G1 Gaming (Gigabyte)