PKLITE

From Just Solve the File Format Problem
(Difference between revisions)
Jump to: navigation, search
(Identification)
(Software)
(14 intermediate revisions by one user not shown)
Line 5: Line 5:
 
|released=1990
 
|released=1990
 
}}
 
}}
'''PKLITE''' is an executable compression utility, from the makers of PKZIP (see [[ZIP]]). There was a free-for-noncommercial-use version, and a "Professional" version.
+
'''PKLITE''' is an executable compression utility, from the makers of PKZIP (see [[ZIP]]). There was a free-for-noncommercial-use version, and a "Professional" version. There was a separate [[PKLITE32]] product for 32-bit Windows.
  
 
It supports mainly DOS [[MS-DOS EXE|.EXE]] and [[DOS executable (.com)|.COM]] formats. Version 2.01 added the ability to compress [[New Executable|Windows 3.x executables]].
 
It supports mainly DOS [[MS-DOS EXE|.EXE]] and [[DOS executable (.com)|.COM]] formats. Version 2.01 added the ability to compress [[New Executable|Windows 3.x executables]].
  
 
Many files compressed by PKLITE can be decompressed by PKLITE, using the <code>-x</code> option. The main exception is files compressed with <code>-e</code>, an option only available in the Professional version.
 
Many files compressed by PKLITE can be decompressed by PKLITE, using the <code>-x</code> option. The main exception is files compressed with <code>-e</code>, an option only available in the Professional version.
 +
 +
== Technical notes ==
 +
=== Version number ===
 +
For pristine PKLITE-compressed EXE files, the 16-bit little-endian integer at offset 28 characterizes, in broad terms, the version of PKLITE that was used, and the type of compression. The low 12 bits are the version number; for example, 0x10f means version 1.15. The 0x1000 bit is set if "extra" compression was used. The 0x2000 bit is another compression setting.
 +
 +
=== Version 1.20 ===
 +
There was no free v1.20 release, but legitimate files do exist with that version number. Most of them are [[self-extracting ZIP]] files made by PKZIP v2.04's ZIP2EXE utility.
 +
 +
There is also a fake version that claims to be v1.20, but is actually a hacked copy of v1.12 Professional. The files it creates are (correctly) labeled as v1.12.
  
 
== Identification ==
 
== Identification ==
The PKLITE software includes a "CHK4LITE.EXE" utility that identifies PKLITE-compressed files, and the version of PKLITE they were created with.
+
Robust identification of PKLITE-compressed files is challenging, due to the many versions and options, and the fact that PKLITE files were often modified to make them more difficult to identify and/or decompress.
  
PKLITE-compressed files normally contain a copyright message near the beginning of the file (though this is not a very robust way to identify them). Based on limited testing, the message starts with either "{{magic|PKLITE}}" or "{{magic|PKlite}}". It is at offset 46 or 48 for COM files, 30 for DOS EXE files, 66 for Windows EXE files. Exception: COM files from v1.00ß have "{{magic|PK&nbsp;Copyr}}" at offset 38.
+
Note that PKLITE includes ''CHK4LITE'', a utility that tries to identify PKLITE-compressed files, and the version of PKLITE they were created with. Different versions of CHK4LITE work differently, but it is fairly rudimentary, and never stood much chance in the arms race over disguising PKLITE files.
  
== Technical notes ==
+
=== Identification of DOS COM ===
=== Version 1.20 ===
+
Based on the start of the copyright message near the beginning of the file...
The CHK4LITE utility will identify some files as having been compressed with "PKLITE Ver. 1.20", but there is no free version 1.20. There is a Professional version that creates these files, though it's not completely clear which one.
+
  
There is also a fake version that claims to be v1.20 (look for "pklt120r.arj"), but is actually a hacked copy of v1.12 Professional. The files it creates will be identified as version "1.12".
+
* v1.00β has "{{magic|PK&nbsp;Copyr}}" at offset 38.
 +
* v1.00 has "{{magic|PKlite}}" at offset 44.
 +
* v1.03-1.14 has "{{magic|PKLITE}}" at offset 44.
 +
* v1.15-2.01 has "{{magic|PKLITE}}" at offset 46.
 +
 
 +
=== Identification of DOS EXE ===
 +
There is a copyright message at offset 30 that starts with "{{magic|PKlite}}" (v2.01) or "{{magic|PKLITE}}" (all other versions).
 +
 
 +
It's likely that all files (except those from v1.00β) have bytes {{magic|00 00}} or {{magic|01 00}} at offset 6, and {{magic|00 01 f0 ff}} at offset 20 (refer to [[MS-DOS EXE#Header structure]]). This is fairly distinctive, though false positives are possible.
 +
 
 +
=== Identification of Windows EXE ===
 +
There is a copyright message at offset 66 that starts with "{{magic|PKlite}}".
  
 
== Specifications ==
 
== Specifications ==
 +
* [https://moddingwiki.shikadi.net/wiki/PKLite ModdingWiki: PKLite]
 
* [https://github.com/afritz1/OpenTESArena/blob/main/docs/pklite_specification.md PKLITE V1.12 compression format]
 
* [https://github.com/afritz1/OpenTESArena/blob/main/docs/pklite_specification.md PKLITE V1.12 compression format]
  
 
== Software ==
 
== Software ==
 
* PKLITE freeware/shareware, for DOS
 
* PKLITE freeware/shareware, for DOS
** v1.00 1990-12-01: [{{CdTextfilesURL|gigabytesw/027b/pklte10.exe}}]
+
** {{CdTextfiles|gigabytesw/027b/pklte10.exe|v1.00}} (1990-12-01)
** v1.03 1990-12-20: [{{CdTextfilesURL|californiacollect/his992/pklte103.exe}}]
+
** {{CdTextfiles|californiacollect/his992/pklte103.exe|v1.03}} (1990-12-20)
** v1.05 1991-03-20: [{{CdTextfilesURL|originalsw/25/pklte105.exe}}]
+
** {{CdTextfiles|originalsw/25/pklte105.exe|v1.05}} (1991-03-20)
** v1.12 1991-06-15: [{{CdTextfilesURL|originalsw/25/pklte112.exe}}]
+
** {{CdTextfiles|originalsw/25/pklte112.exe|v1.12}} (1991-06-15)
** v1.13 1991-08-01: [{{CdTextfilesURL|megademo2/UTILITY/ARCHIVE/PKLTE113.EXE}}]
+
** {{CdTextfiles|megademo2/UTILITY/ARCHIVE/PKLTE113.EXE|v1.13}} (1991-08-01)
** v1.14 1992-06-01: [{{CdTextfilesURL|ftp.wwiv.com/pub/COMPRESS/PKLTE114.ZIP}}]
+
** {{CdTextfiles|ftp.wwiv.com/pub/COMPRESS/PKLTE114.ZIP|v1.14}} (1992-06-01)
** v1.15 1992-07-30: [{{CdTextfilesURL|20mnn/ARCHIVE/PKLTE115.EXE}}]
+
** {{CdTextfiles|20mnn/ARCHIVE/PKLTE115.EXE|v1.15}} (1992-07-30)
** v1.50 1995-04-10: [{{CdTextfilesURL|dfeno1/ARCHIVER/PKLTE150.EXE}}]
+
** {{CdTextfiles|dfeno1/ARCHIVER/PKLTE150.EXE|v1.50}} (1995-04-10)
** v2.01 1996-03-15: [{{CdTextfilesURL|darkdomain/programs/dos/archivers/pklts201.exe}}]
+
** {{CdTextfiles|darkdomain/programs/dos/archivers/pklts201.exe|v2.01}} (1996-03-15)
* PKLITE (other)
+
* PKLITE - other/various
** 1.00ß 1990-05-29: [{{CdTextfilesURL|swinnund/disk3/FILEUTIL/PKLITE.ZIP}}] (not an authorized release[http://cd.textfiles.com/simtel/simtel20/MSDOS/INFO/PKLITE.WRN])
+
** [http://old-dos.ru/index.php?page=files&mode=files&do=show&id=720 PKLite at old-dos.ru] - various versions
 +
** {{CdTextfiles|swinnund/disk3/FILEUTIL/PKLITE.ZIP|v1.00β}} (1990-05-29) (not an authorized release[http://cd.textfiles.com/simtel/simtel20/MSDOS/INFO/PKLITE.WRN])
 +
** fake v1.20 (1992-08-20): [{{CdTextfilesURL|thegreatunsorted/old_apps/dosutils/pklite.zip}}], [http://www.dcee.net/Files/Archiver/pklt120r.arj], [http://pub.agrarix.net/DOS/COMPRESS/PKLT120R.ARJ]
 +
** [https://vetusware.com/download/PKLite%202.01%20-e%20enabled/?id=9762 XADIP201.ZIP] (at vetusware.com) - Hacked "XADi" version of PKLITE 2.01-shareware. Claims to support the <code>-e</code> option, but it only does a little of what the real software does.
  
Static decompression:
+
Decompression, general:
* PKLITE (with <code>-x</code> option)
+
 
* [https://github.com/hackerb9/depklite depklite] (Not a complete decompression utility, but maybe useful.)
 
* [https://github.com/hackerb9/depklite depklite] (Not a complete decompression utility, but maybe useful.)
 +
* [https://github.com/virginwidow/mz-explode mz-explode]
 +
* {{Deark}} (with <code>-m pklite</code> option)
 +
 +
Decompression, for DOS:
 +
* PKLITE (with <code>-x</code> option)
 +
* DISLITE by JohnPC & CV-Tassle: {{CdTextfiles|pdos9606/ARCHIVER/EXECOMP/DISLT117.ZIP|v1.17a}} · [https://johnpc.home.xs4all.nl/dislite/dislt117.zip another copy] · [https://johnpc.home.xs4all.nl/dislite/dislite.zip source code]
 +
* See [[Executable compression#Decompression software]] for some multi-format utilities that support PKLITE, e.g. UNP.
 +
* UnPKLite ([https://web.archive.org/web/20070101000000*/http://www.tbcnet.com/~clive/unpklite.zip archived]) by Tenth Planet Software / Clive Turvey
 +
* {{CdTextfiles|somuch/smsharew2/UTIL2/PKUN10.ZIP|PKUNLITE v1.00}} by Montgomery Engineering
 +
* {{CdTextfiles|sv/svplatinum/CDR31/UNLITE30.ZIP|PKUNLITE v3.00}} by The Software Surgeon & Electronic Rats
 +
* Universal PKLITE Unpacker (UNPKLITE.EXE) by PReDaTor 666: {{OldskoolDOSEXE}} → Executable Tools Pack → unpackers/universal pklite unpacker.*
 +
* [[AVPACK]]
 +
* {{CdTextfiles|simtel/simtel20/MSDOS/EXECOMP/EXLITE2.ZIP|ExLite}} by Inbar Raz (COM files only, includes source code)
 +
 +
Protectors (utilities that modify a PKLITE-compressed file to make it more difficult to identify and/or decompress):
 +
* {{CdTextfiles|nightowl/nopv09/018A/PKFOOL10.ZIP|PKFOOL v1.0}} (requires BRUN45.EXE, not included)
 +
* {{CdTextfiles|silvercollection/disc2/ARCHIVE/PKLTEFIX.ARJ|PKLTEFIX}}
 +
* [{{SACFTPURL|pack|un2pack2.zip}} UN²PACK v2.0]
 +
 +
Other:
 +
* {{CdTextfiles|simtel/simtel20/MSDOS/EXECOMP/LOWFIX.ZIP|LOWFIX}} - Patches v1.00-1.05 to fix bugs, and changes the version number to 1.06.
 +
* [https://github.com/jsummers/pkla pkla] - Analyzer utility
 +
* See also [[MEGALITE]]
 +
* See also [[PKTINY]]
  
Dynamic decompression:
+
== Sample files ==
* DISLITE (notable because its source code was released)
+
* https://github.com/camoto-project/testexe/tree/master/compress
** v1.17a: [{{CdTextfilesURL|pdos9606/ARCHIVER/EXECOMP/DISLT117.ZIP}}], [https://johnpc.home.xs4all.nl/dislite/dislt117.zip]
+
** [https://johnpc.home.xs4all.nl/dislite/dislite.zip Source code]
+
* A number of other DOS utilities exist to decompress PKLITE files; a few are at [{{CdTextfilesURL|pdos9606/ARCHIVER/EXECOMP/}}].
+
  
 
== Links ==
 
== Links ==

Revision as of 16:18, 4 August 2023

File Format
Name PKLITE
Ontology
Released 1990

PKLITE is an executable compression utility, from the makers of PKZIP (see ZIP). There was a free-for-noncommercial-use version, and a "Professional" version. There was a separate PKLITE32 product for 32-bit Windows.

It supports mainly DOS .EXE and .COM formats. Version 2.01 added the ability to compress Windows 3.x executables.

Many files compressed by PKLITE can be decompressed by PKLITE, using the -x option. The main exception is files compressed with -e, an option only available in the Professional version.

Contents

Technical notes

Version number

For pristine PKLITE-compressed EXE files, the 16-bit little-endian integer at offset 28 characterizes, in broad terms, the version of PKLITE that was used, and the type of compression. The low 12 bits are the version number; for example, 0x10f means version 1.15. The 0x1000 bit is set if "extra" compression was used. The 0x2000 bit is another compression setting.

Version 1.20

There was no free v1.20 release, but legitimate files do exist with that version number. Most of them are self-extracting ZIP files made by PKZIP v2.04's ZIP2EXE utility.

There is also a fake version that claims to be v1.20, but is actually a hacked copy of v1.12 Professional. The files it creates are (correctly) labeled as v1.12.

Identification

Robust identification of PKLITE-compressed files is challenging, due to the many versions and options, and the fact that PKLITE files were often modified to make them more difficult to identify and/or decompress.

Note that PKLITE includes CHK4LITE, a utility that tries to identify PKLITE-compressed files, and the version of PKLITE they were created with. Different versions of CHK4LITE work differently, but it is fairly rudimentary, and never stood much chance in the arms race over disguising PKLITE files.

Identification of DOS COM

Based on the start of the copyright message near the beginning of the file...

  • v1.00β has "PK Copyr" at offset 38.
  • v1.00 has "PKlite" at offset 44.
  • v1.03-1.14 has "PKLITE" at offset 44.
  • v1.15-2.01 has "PKLITE" at offset 46.

Identification of DOS EXE

There is a copyright message at offset 30 that starts with "PKlite" (v2.01) or "PKLITE" (all other versions).

It's likely that all files (except those from v1.00β) have bytes 00 00 or 01 00 at offset 6, and 00 01 f0 ff at offset 20 (refer to MS-DOS EXE#Header structure). This is fairly distinctive, though false positives are possible.

Identification of Windows EXE

There is a copyright message at offset 66 that starts with "PKlite".

Specifications

Software

  • PKLITE freeware/shareware, for DOS
  • PKLITE - other/various
    • PKLite at old-dos.ru - various versions
    • v1.00β (1990-05-29) (not an authorized release[1])
    • fake v1.20 (1992-08-20): [2], [3], [4]
    • XADIP201.ZIP (at vetusware.com) - Hacked "XADi" version of PKLITE 2.01-shareware. Claims to support the -e option, but it only does a little of what the real software does.

Decompression, general:

Decompression, for DOS:

Protectors (utilities that modify a PKLITE-compressed file to make it more difficult to identify and/or decompress):

Other:

  • LOWFIX - Patches v1.00-1.05 to fix bugs, and changes the version number to 1.06.
  • pkla - Analyzer utility
  • See also MEGALITE
  • See also PKTINY

Sample files

Links

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox