叫人做网站后不提供源码商机网创业好项目
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 下调试成功。
 
#
