Updated survey of LHarc and LHA

Since my first post on DOS versions of LHarc/LHA, I’ve found a few more versions of the software. Six of them appear to be original/official, and all of those are Japanese-language: 1.13d, 2.05b, 2.13, 2.52, 2.54, and 2.55.

And I found quite a few new modified or hacked versions, two of which I’ll discuss: “v1.14a” and “v2.01a”.

All of the versions mentioned here should have links on the File Formats wiki.

My updated list is below.

Updated list of versions

Here are the qualifying versions I’m aware of for DOS:

Name/ver/reltype/lang  Date        Reference
======================================================
LHarc? 0.01                        [1.13c lharc.man]
LHarc? 0.02                        [1.13c lharc.man]
LHarc? 0.03                        [1.13c lharc.man]
LHarc? 0.04                        [1.13c lharc.man]
LHarc? 0.05                        [1.13c lharc.man]
LHarc? 0.06                        [1.13c lharc.man]
LHarc? 0.06b                       [1.13c lharc.man]
LHarc? 0.07                        [1.13c lharc.man]
LHarc? 0.07a                       [1.13c lharc.man]
LHarc? 0.07c                       [1.13c lharc.man]
LHarc  1.00  rel   E   1989-03-04  [1.13c lharc.man]
LHarc  1.01                        [1.13c lharc.man]
LHarc  1.12  test  E   1989-04-23  [1.13c lharc.man]
LHarc  1.12b rel   E   1989-04-29  [1.13c lharc.man]
LHarc  1.13  test  E   1989-05-04  [1.13c lharc.man]
LHarc  1.13b                       [1.13c lharc.man]
LHarc  1.13c rel   E   1989-05-31  [1.13d lharc.man]
LHarc  1.13d rel   JE  1989-12-22  [1.13d lharc.man]
LH     2.02a           1990-11-18  [2.05 history.doc]
LH     2.02b           1990-11-21  [2.05 history.doc]
LH     2.02c           1990-12-03  [2.05 history.doc]
LH     2.02d           1990-12-25  [2.05 history.doc]
LH     2.02e           1990-12-27  [2.05 history.doc]
LH     2.02f           1990-12-29  [2.05 history.doc]
LH     2.03            1991-01-03  [2.05 history.doc]
LH     2.03a           1991-01-04  [2.05 history.doc]
LH     2.04            1991-01-18  [2.05 history.doc]
LH     2.04a           1991-01-20  [2.05 history.doc]
LHa    2.05  test  JE  1991-01-27  [2.10 history.eng]
LHa    2.05a           1991-02-06  [2.13 history.eng]
LHa    2.05b test  J   1991-02-07  [2.13 history.eng]
LHa    2.06        E   1991-02-16  [2.13 history.eng]
LHA    2.10  rel   E   1991-02-24  [2.13 history.eng]
LHA    2.11  rel   E   1991-03-03  [2.13 history.eng]
LHA    2.12  rel   E   1991-03-21  [2.13 history.eng]
LHA    2.12a test      1991-04-15  [2.13 history.eng]
LHA    2.12b test      1991-07-03  [2.13 history.eng]
LHA    2.13c test      1991-07-13  [2.13 history.eng]
LHA    2.13  rel   JE  1991-07-20  [2.55b history.doc]
LHA    2.14  test      1992-03-20  [2.55b history.doc]
LHA    2.50  test      1992-07-26  [2.55b history.doc]
LHA    2.51            1992-08-10  [2.55b history.doc]
LHA    2.52  test  J   1992-09-07  [2.55b history.doc]
LHA    2.53            1992-09-11  [2.55b history.doc]
LHA    2.54        J   1992-10-04  [2.55b history.doc]
LHA    2.55  test  J   1992-11-15  [2.55b history.doc]
LHA    2.55a           1992-11-22  [2.55b history.doc]
LHA    2.55b       JE  1992-11-24  [2.55b history.doc]
LHA    2.60  test      1994-06-10  [2.66 changes.txt]
LHA    2.61  test      1994-06-12  [2.66 changes.txt]
LHA    2.63  test      1994-07-07  [2.66 changes.txt]
LHA    2.64  test      1994-12-03  [2.66 changes.txt]
LHA    2.65  test      1994-12-20  [2.66 changes.txt]
LHA    2.66  test  J   1994-12-30  [2.66 changes.txt]
LHA    2.67  test      1995-05-24  [LHA32 2.67.00 changes.w32]

And one version for 32-bit Windows console:

LHA32  2.67.00 test  J  1995-10-08

Notes on the Japanese versions

If you want the Japanese versions to look reasonably correct when you run them, like this:

… I suggest using the DOSBox-X DOS emulator. After starting DOSBox-X, run “chcp 932” first, to switch to the Japanese character set. Then run the LHA.EXE or LHARC.EXE program. If you want to go back to the default character set, try “chcp 437“, or restart DOSBox-X.

Tamper detection feature

The LHA software makes no effort to validate itself when you run it normally, but interestingly, LHA v2.x does have a validation feature. It’s invoked by using the “t” (test) command on the LHA.EXE file itself. If it passes the test, it prints “This file seems to be ORIGINAL…”. If it fails, it prints either “No file found” or “Broken archive”.

Unfortunately, this feature doesn’t exist in LHarc v1.x, which is what most of the interesting hacks are based on.

While it would presumably be easy to make a modified version that falsely claims to be an original, the only non-original version I found that actually does that is the popular “2.55E” English translation by Hitoshi Ozawa.

I’ve found many files that fail the test, and almost all of them look non-malicious. A common reason for failure is the use of executable compression, such as PKLITE or LZEXE.

LHarc v1.14a

I’m not sure how I overlooked this one before, but in addition to the fake 1.14β, there is also a fake 1.14a.

Like 1.14β and LHice, it’s a hack of version 1.13c.

Regarding the trio of LHice 1.14, LHarc 1.14β, and LHarc 1.14a, I can’t guess whether they were all made by the same person, three different people, or what.

LHice was the first of the three to be released, but I don’t know which of 1.14β and 1.14a was next. A careful study of them might reveal the answer.

Something to notice in the 1.14a screenshot is at the lower right where it says “AUTO-LZH.BAT”. Don’t worry about what it’s for; the problem is that it’s incorrect. In the real software (and in 1.14β), it is “AUTOLARC.BAT”. In LHice, it is “AUTO-ICE.BAT”. This makes it pretty obvious that at least this part of the 1.14a hack was derived from the LHice hack of LHarc v1.13c, not directly from the real LHarc 1.13c.

LHarc v2.01a

I found a handful of copies of the mysterious “v2.01a” mentioned last time. So it definitely does exist. But it’s also definitely an illegitimate hack of v1.13c. It seems to have fooled a few people that it probably shouldn’t have. Including, y’know, Wikipedia.

I have only found the bare LHARC.EXE executable file, never packaged with any accompanying documentation.

The file size is exactly the same as v1.13c, and the only differences are cosmetic: the “usage” message, some diagnostic messages, and the progress meter.

I see no evidence that it’s connected to LHice and friends. Though, without documentation, I guess there’s not much evidence against it, either.

For what it’s worth, it fixes a typo in one of the messages in the original software:

  "Cotinue process? [Y/N] " →
  "Continue process?      "

The person who did this wasn’t dedicated enough to figure out how to increase the string length, so he/she sacrificed the “[Y/N]” prompt to make room.

Having resolved v2.01a, I think I can definitively state that LHarc v1.13d was the last official DOS version of LHarc named “LHarc”, no matter if you go by release date, or by version number.

A thought about character sets

All four of the English-language hacked versions that I’ve discussed (LHice, LHarc v1.14β, v1.14a, v2.01a) use non-ASCII characters in some way. Maybe for the line-drawing characters, or the “β” (technically it’s a “ß” being used as a surrogate for “β”), or especially for the progress meter.

But this software was made by a Japanese guy. In most cases, these characters would not have worked correctly on computers that were configured to support Japanese.

Sure, it’s possible that he would have used such special characters in the English-language versions of his software. But there would have been drawbacks to that, and none of the real versions do it. It’s an easy red flag to look for.

English patches for v2.66 and v2.67

There exist Japanese-to-English patches for LHA 2.66 and LHA32 2.67. The patches convert the error messages to English, though the “usage” message remains Japanese.

The distribution files to look for are “lha266e.exe” and “lha267e.exe”. They only contain instructions for patching the file, not the actual patched file.

Every copy of the 2.66 patch that I’ve seen has an obvious clerical error:

00008A50  70 65 64 00 3A 20 25 73 0A 00 45 6E 74 65 72 20
00008A60  72 63 68 69 76 65 20 66 69 6C 65 20 6E 61 6D
00008A70  65 20 20 20 20 20 20 20 20 20 00 00 45 6E 74 65

There is a missing byte at the beginning of the “8A60” line. It should be:

00008A60  61 72 63 68 69 76 65 20 66 69 6C 65 20 6E 61 6D

The patches are possibly official. I tried the 2.66 patch, and it seems to work as advertised. However, it does not pass the “LHA t LHA.EXE” self-test, regardless of whether I fix the clerical error. (Though it’s possible I didn’t apply the patch correctly — there’s no other way to verify it.)

Other comments

Still no versions named “LH”. Still no pre-1.0 versions. If any of those versions are out there somewhere, maybe the language barrier is making them hard to find. The change log seems to say that LH appeared on a disk accompanying “C-Magazine”.

The LH versions start at version number 2.02. Maybe that was to avoid confusion with the fake v2.01a DOS version. But there were other third-party 2.00/2.01 versions as well, such as some Atari versions.

Though LHA 2.67 is implied to exist by the LHA32 2.67 documentation, I wouldn’t be surprised if it doesn’t.

One thought on “Updated survey of LHarc and LHA

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s