当我知道它是 DOS MZ 可执行文件时,如何向radare2 指定我正在反汇编的内容?
因为它不会为我自动检测到这一点。
当我知道它是 DOS MZ 可执行文件时,如何向radare2 指定我正在反汇编的内容?
因为它不会为我自动检测到这一点。
您可以使用radare2反汇编DOS 16位可执行文件,如下所示:
使用TEXTINST.EXE
FreeDOS 1.1 CDROM 映像的示例:
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
; [0] 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)
如果需要,您可以强制反汇编器等假定 DOS,如下所示:
e asm.arch=x86
e asm.os=dos
如果你认为你有一个 DOS 可执行文件并且上面的方法不起作用,那么可能有一些更微妙的事情发生,你应该发布一个问题,具体说明你尝试了什么,你期望什么以及什么不起作用。
注意:显示您尝试过的内容等更有可能在 SE 网站上引出答案...