使用radare2反汇编未知的DOS MZ可执行文件

逆向工程 拆卸 雷达2
2021-06-19 10:50:12

当我知道它是 DOS MZ 可执行文件时,如何向radare2 指定我正在反汇编的内容?

因为它不会为我自动检测到这一点。

1个回答

您可以使用radare2反汇编DOS 16位可执行文件,如下所示:

使用TEXTINST.EXEFreeDOS 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 网站上引出答案...