`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
packedBMENACE1.EXE
(freeware version):fbb30737c315788337baf9f0bf5cbb16
unpacked,8da4aa152c4c390f776fd3086a6d7fb2
packed