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:
- Launch binary ninja
- Use File -- Open with Options
- choose your EXE file
- select Platform as none-none-i8086 as per the plugin
- select Architecture as i8086
- use P to define the initial function
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