How do I specify to radare2 that what I'm disassembling when I know it is a DOS MZ executable?
As it does not auto-detect this for me.
Reverse Engineering Stack Exchange is a question and answer site for researchers and developers who explore the principles of a system through analysis of its structure, function, and operation. It only takes a minute to sign up.Sign up to join this community
You can disassemble a DOS 16-bit executable using radare2 as follows:
TEXTINST.EXE from the FreeDOS 1.1 CDROM image:
bash$ radare2 TEXTINST.EXE SS : 214f SP : 4c00 IP : 0 CS : 0 NRELOCS: 1 RELOC : 1c CHKSUM : 0 [0000:0020]> aa [0000:0020]> pd 10 ;  va=0x00000020 pa=0x00000020 sz=67272 vsz=67272 rwx=-rwx .text ;-- section..text: 0000:0020 b93b03 mov cx, 0x33b 0000:0023 be7406 mov si, 0x674 0000:0026 89f7 mov di, si 0000:0028 1e push ds 0000:0029 a9b580 test ax, 0x80b5 | 0000:002c 8cc8 mov ax, cs | 0000:002e 050510 add ax, 0x1005 | 0000:0031 8ed8 mov ds, ax | 0000:0033 05f010 add ax, 0x10f0 | 0000:0036 8ec0 mov es, ax (etc)
If required, you can force the disassembler, etc. to assume DOS as follows:
e asm.arch=x86 e asm.os=dos
If you think you have a DOS executable and the above doesn't work, there may be something more subtle going on, and you should post a question showing specifically what you tried, what you expect and what is not working.
Note: showing what you tried, etc. is more likely to elicit answers on the SE sites...