October 25, 2026

Some MOD_EMUP tools - binary ninja

Binary ninja is an amazing tool. I wonder if it can be used with a 16-bit x86 EXE file like I am working with?

It handles x86 32 and 64 bit, but a plugin exists for 16-bit x86. However, I read that the free version explicitly disables plugin support.

A personal license (perpetual) costs $199. (They offer this for $49 with a student discount)

Special issues with EXE files

Bninja will think that an EXE file is (or should be) a modern PE format EXE file rather than a legacy MZ format file like I have. It will fall back to treating it as a raw binary file. Do this: To use "P" you need to inspect the EXE header, find the header size in "paragraphs", multiply by 16, and use that to find the initial CS:IP

Another option if the file is not to big is to use exe2bin to strip off the MZ header and convert it to a COM file. The standard IP will then be 0x100.

What about Ghidra

I read that Ghidra will work with 16 bit x86 code, but with some limitations. The main limitation is segment register tracking -- one of the big headaches I am dealing with myself.


Have any comments? Questions? Drop me a line!

Tom's Electronics pages / tom@mmto.org