DOS下EXE文件的分析 <1>
如何在dos下读取exe文件的反汇编代码?
一般的debug命令是这样的
debug simcga.exe
用dos管道命令如下
debug simcga.exe >simcga.txt
这时是无回显的状态,
再输入
u 0 200
之后输入
q
退出。
这样在simcga.txt中就会记录显示
从地址0h 到 地址200h 的debug反汇编代码。
如下一个分析例子:
075C:0406 B402 MOV AH,02
075C:0408 B25B MOV DL,5B
075C:040A CD21 INT 21
075C:040C B402 MOV AH,02
075C:040E 8A15 MOV DL,[DI]
075C:0410 CD21 INT 21
075C:0412 47 INC DI
075C:0413 803D00 CMP BYTE PTR [DI],00
075C:0416 7408 JZ 0420
075C:0418 B402 MOV AH,02
075C:041A B22C MOV DL,2C
075C:041C CD21 INT 21
075C:041E EBEC JMP 040C
075C:0420 B402 MOV AH,02
075C:0422 B25D MOV DL,5D
075C:0424 CD21 INT 21
075C:0426 B402 MOV AH,02
075C:0428 B23F MOV DL,3F
075C:042A CD21 INT 21
int 21h 的 ah 的02h 的功能是显示字符,
dl 是显示字符的ascii码。
如上 5b 和 5d 的ascii吗是"[""]".
就是 显示 "[",和 "]"字符。
DOS下一般的若在反汇编代码中出现int 10h或int 21h等,
这就好分析一些。
我猜的,若没有以上的int 等,而出现如下rep movsb这类,
将一个地址写到另一个
地址就难一些。
以下另一个例子,
jne 052h
mov al,06h
mov ah,00h
int 10h
这是从emu8086这个软件的 ver 4.08版的
模拟软件中截取的几行代码。
出自dos游戏<三国志2>中的simcga.exe中。
他simcga是设置dos图形模式,
06h 是 06H:640×200 2色。
20250713 -win10 dosbox 下调试成功。
#