LZEXE
(→Identification) |
(sample files) |
||
(4 intermediate revisions by one user not shown) | |||
Line 10: | Line 10: | ||
LZEXE-compressed files normally have ASCII "{{magic|LZ09}}" (v0.90) or "{{magic|LZ91}}" (v0.91 or 0.91e) at offset 28. | LZEXE-compressed files normally have ASCII "{{magic|LZ09}}" (v0.90) or "{{magic|LZ91}}" (v0.91 or 0.91e) at offset 28. | ||
− | However, it was not uncommon for LZEXE users to modify this signature, for various reasons. | + | However, it was not uncommon for LZEXE users to modify this signature, for various reasons. Examples include [[ARJ#Self-extracting archives|ARJ self-extracting archives]], which have signature "{{magic|RJSX}}", and some [[RAR#Self-extracting archives|RAR self-extracting archives]], with signature "{{magic|RSFX}}". |
More-robust identification is possible, in particular by looking at bytes near the ''start-of-execution'' point (refer to [[MS-DOS EXE#Special file positions]]). This is at a different location in every file. | More-robust identification is possible, in particular by looking at bytes near the ''start-of-execution'' point (refer to [[MS-DOS EXE#Special file positions]]). This is at a different location in every file. | ||
Apparently, the 300+ bytes starting at the ''start-of-execution'' point are always the same for a given version of LZEXE -- and there are only three known versions. A possible signature is the byte sequence {{magic|06 0e 1f 8b 0e 0c 00 8b f1 4e 89 f7 8c db 03 1e 0a 00 8e c3}}, starting either at the ''start-of-execution'' point, or (for v0.91e) one byte beyond it. | Apparently, the 300+ bytes starting at the ''start-of-execution'' point are always the same for a given version of LZEXE -- and there are only three known versions. A possible signature is the byte sequence {{magic|06 0e 1f 8b 0e 0c 00 8b f1 4e 89 f7 8c db 03 1e 0a 00 8e c3}}, starting either at the ''start-of-execution'' point, or (for v0.91e) one byte beyond it. | ||
+ | |||
+ | Also, the author's signature appears in this area. Version 0.90 has "<code>*Fabrice BELLARD*</code>" at ''start-of-execution''+269. Versions 0.91 and 0.91e have "<code>*FAB*</code>" at ''start-of-execution''+233. | ||
+ | |||
+ | Hacked or otherwise patched variants of LZEXE seem to be relatively rare -- or maybe they're just hard to identify as such. Known examples: | ||
+ | * [[LHARK#Self-extracting archives]] | ||
+ | * [[PCX2EXE (Arminio Grgic)]] | ||
== Software == | == Software == | ||
Line 47: | Line 53: | ||
* [{{SACFTPURL|pack|lzalt03.zip}} LZALT v0.03] by Codon Software | * [{{SACFTPURL|pack|lzalt03.zip}} LZALT v0.03] by Codon Software | ||
* [{{SACFTPURL|pack|lzealt.zip}} LZEALT v1.04] by De Trans Software | * [{{SACFTPURL|pack|lzealt.zip}} LZEALT v1.04] by De Trans Software | ||
+ | |||
+ | == Sample files == | ||
+ | * {{DexvertSamples|archive/lzexePacked}} | ||
== Links == | == Links == | ||
* [https://bellard.org/lzexe.html LZEXE home page] | * [https://bellard.org/lzexe.html LZEXE home page] | ||
* [https://www.lodsb.com/reversing-lz91-from-commander-keen Reversing LZ91 from Commander Keen] | * [https://www.lodsb.com/reversing-lz91-from-commander-keen Reversing LZ91 from Commander Keen] | ||
+ | * [https://cosmodoc.org/topics/lzexe/ Cosmodoc: LZEXE] |
Latest revision as of 00:55, 15 May 2024
LZEXE is an executable compression utility, developed by Fabrice Bellard. It compresses DOS .EXE files.
Contents |
[edit] Identification
LZEXE-compressed files normally have ASCII "LZ09
" (v0.90) or "LZ91
" (v0.91 or 0.91e) at offset 28.
However, it was not uncommon for LZEXE users to modify this signature, for various reasons. Examples include ARJ self-extracting archives, which have signature "RJSX
", and some RAR self-extracting archives, with signature "RSFX
".
More-robust identification is possible, in particular by looking at bytes near the start-of-execution point (refer to MS-DOS EXE#Special file positions). This is at a different location in every file.
Apparently, the 300+ bytes starting at the start-of-execution point are always the same for a given version of LZEXE -- and there are only three known versions. A possible signature is the byte sequence 06 0e 1f 8b 0e 0c 00 8b f1 4e 89 f7 8c db 03 1e 0a 00 8e c3
, starting either at the start-of-execution point, or (for v0.91e) one byte beyond it.
Also, the author's signature appears in this area. Version 0.90 has "*Fabrice BELLARD*
" at start-of-execution+269. Versions 0.91 and 0.91e have "*FAB*
" at start-of-execution+233.
Hacked or otherwise patched variants of LZEXE seem to be relatively rare -- or maybe they're just hard to identify as such. Known examples:
[edit] Software
Compression:
- LZEXE v0.90 (1989-10-30) - French
- lzexe_e.zip - v0.90 with documentation translated to English by Luigi M. Bianchi
- LZEXE v0.91 (1990-01-02) - French
- lzexe91.zip - v0.91 with English-language supporting material by Luigi M. Bianchi and Earle Robinson
- LZEXE v0.91e (1990-10-15) (also here) - English
- "LZEXE v1.00a" by IS2 France Diffusion. Seems to be functionally identical to LZEXE 0.91.
- lzexeeng.zip - English translation of v0.91, unknown origin
Decompression, general:
- UNLZEXE - A widely-distributed open source utility, originally by Mitugu Kurizono (Kou). Versions "0.6" and above include patches by other authors, and might be unofficial.
- mz-explode
- Deark (with
-m lzexe
option) - Rizzle
Decompression, for DOS:
- See Executable compression#Decompression software for some multi-format utilities that support LZEXE.
- UnLZEXE (archived) by Tenth Planet Software / Clive Turvey (for DOS)
Protectors (utilities that modify a compressed file to make it more difficult to identify and/or decompress):
- ANTI-UNLZEXE
- LZALT v0.03 by Codon Software
- LZEALT v1.04 by De Trans Software