neuviemeporte / mzretools

Tools for reversing DOS games, primarily inspection of MZ executables

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

`mzmap` fails on some executables

lethal-guitar opened this issue · comments

I have two executables which produce errors when running mzmap on them. Both executables have been built using Borland C compilers, and contain only 8086/8088 instructions. I can't reproduce the problem using a simple test program compiled with the same compilers, so it seems to be something specific to the executables in question.

Example 1: DN1.EXE from Duke Nukem 1 Shareware, decompressed using e.g. UNLZEXE

Analyzing code within extents: 1000:0000-2000:ccf9/01ccfa
mzmap: <...>/mzretools/src/instruction.cpp:299: void Instruction::load(const Byte*): Assertion `iclass != INS_ERR' failed.
Aborted

Example 2: BMENACE1.EXE from BioMenace Shareware or Freeware version, decompressed using UNP (UNLZEXE doesn't work for this one)

Analyzing code within extents: 1000:0000-4000:629f/0362a0
Done analyzing code
Building routine map from search queue contents: 437 routines over 29 segments
ERROR: Unable to move address 4000:629f/04629f to segment 0x2f61

I'm happy to do some debugging myself, but I would need some guidance/pointers on where to look.

Hey, thanks for the bug report. The first one looks like an unsupported instruction, but I need to check to make sure. The second one is a problem after the initial mapping is done and the actual map is generated, the 29 segments look suspicious, so I would also need to check.

Could you please provide the md5 sums for these executables? Thanks.

Could you please provide the md5 sums for these executables?

Absolutely! Thanks for having a look.

  • DN1.EXE (shareware version): 0df140a6d0a2c843c83b3cc9c8c40d70 unpacked, c6c8513ed6fda53265e8e4b90719f97a packed
  • BMENACE1.EXE (freeware version): fbb30737c315788337baf9f0bf5cbb16 unpacked, 8da4aa152c4c390f776fd3086a6d7fb2 packed