逆向基础--汇编基础(DOS安装与介绍) (06)

一.介绍安装

DOS全称是Disk Operationg System 是指磁盘操作系统。作为微软在个人计算机上使用的一个操作系统载体,推出了多个版本。

DOS家庭包括 :MS-DOS、 PC-DOS、 DR-DOS、 FreeDOS、NovellDOS、PTS-DOS、 ROM-DOS、JM-0S等,其中以MS-DOS最为著名,最自由开放的则是FreeDOS。

8086CPU不能在win10上运行,下载DOSBOX模拟器(windows操作系统 DOSBox0.74-3-win32-installer.exe)和MASM(网上下载)

1.1 DOSBox安装与配置

默认安装DOSBox0.74-3-win32-installer.exe后,点击桌面dos图标会弹出二个窗口,如下所示:

其中DOSBox Status Windows窗口中会显示.conf配置文件的目录,配置文件一般在C:\Users\用户\AppData\Local\DOSBox\dosbox-0.74-3.conf

如果不想弹出二个窗口,要去掉DOSBox Status Windows窗口,在dos图标-->右键属性-->加上 -noconsole 如下所示

复制代码
"C:\Program Files (x86)\DOSBox-0.74-3\DOSBox.exe" -userconf -noconsole

修改默认窗口大小,在dosbox-0.74-3.conf配置文件中,配置如下(注意1280X1080中 乘是大写英文字母X)

复制代码
#windowresolution=original
#output=surface
windowresolution=1280X1080
output=opengl

下面列出DOS一些常用命令,如下表格

|------|----------------------------------------------------------|
| 命令 | 描述 |
| dir | 查看当前目录下文件和文件夹 |
| cd | 进入特定目录 cd code进入当前目录下的code目录 cd \ 切换到根目录 cd .. 切换到上一级目录 |
| md | 建立特定文件夹 md code 在当前目录下建立一个名字叫code的目录 |
| rd | 删除特定文件夹 rd code 删除当前目录下code文件夹 |
| cls | 清除屏幕,清除屏幕上所有的显示内容,只留下当前的命令行 |
| exit | 退出 |

1.2 MASM安装

MASM 的全称 "Microsoft Macro Assembler" ,作用是汇编语言翻译成机器码,里面有必不可少的编译工具。MASM下载后解压安装MasmSetup.exe, 我这里安装到了D:\DOS\masm目录下,把 bin5目录下的LINK.EXE和MASM.EXE文件复制到D:\DOS\test目录下。这个MASM.EXE是microsoft(R) Macro Assembler Version 5.00,支持16位的dos程序。

二.程序的编译过程

2.1 设置虚拟盘,切换到C盘(注意这里不是操作系统的C盘,而是DOS的虚拟C盘)

复制代码
mount c D:\DOS\test

2.2 在test文件夹下新建一个1.asm汇编文件, 里面写入16位的dos程序,程序的功能是打印hello wrold!,如下所示

复制代码
.model small
.stack 100h

.data
    msg db 'Hello World!', '$'

.code
main proc
    mov ax, @data
    mov ds, ax

    ; 打印字符串
    mov ah, 09h
    mov dx, offset msg
    int 21h

    ; 退出程序
    mov ah, 4Ch
    int 21h
main endp
end main

2.3 编译源文件

复制代码
mams 1.asm   //执行这句命令会生成一个中间文件1.obj  

注意:要确认程序编译后没有问题会显示: 0 Severe Errors

2.4 链接

复制代码
link 1.obj  //这个命令会产生一个目标文件 1.exe,

2.5 执行目标文件,就会输出hello world! 如下图所示

2.6 上述2.1步骤,每次开启DOSBOX时都要手动执行,为了避免这种麻烦,下面进行配置

找到C:\Users\用户\AppData\Local\DOSBox\dosbox-0.74-3.conf文件,在底部加入二行代码,如下图所示

三.程序的debug过程

之前上把 bin5目录下的LINK.EXE和MASM.EXE文件复制到D:\DOS\test目录下。这里再把bin6目录下的DEBUG.EXE文件也复制进来。查看D:\DOS\test目录下的文件如下所示:

在DOS命令行输入:debug 1.exe 后,提示输入命令,命令有如下所示:

|------|---------------------------------------------------------------|
| 命令 | 描述 |
| R | 查看/修改CPU中寄存器的内容。 输入:r ax 回车 会出来一个:在后面输入你想要改变的数据就可以改变ax中的内容 |
| D | 查看内存中的内容 d段地址:偏移地址 回车可以查看该物理地址制定的内存中的内容。如: d1000:0000 |
| E | 改写内存中的内容 e 段地址:偏移地址 要修改的内容。 如 e 1000:000 0 1 2 3 4 5 6 7 |
| U | 将内存中的机器指令翻译成汇编指令 。简单理解为查看源码 |
| T | 命令执行一条机器指令 ,单步执行程序(相当于vs studio中F11调试)。 t命令是"trace"的缩写,即单步跟踪。 |
| A | 以汇编指令的格式在内存中写入一条机器指令 |
| quit | 退出 debug |

3.1 使用r命令查看CPU中的寄存器,常见的AX、BX、CX、DX四种寄存器,以及CS:IP

3.2 使用d命令查看内存的内容,其中076A:0010是物理地址(段地址:偏移地址)

如:076A:0010物理地址内存中第一字节为48h==72d,而十进制72对应的ASCII字符是【 H】

3.3 使用e命令修改内存中的内容,如下所示,物理地址内存中第一字节为48h,改为50h,再使用-d来查看该物理地址中的内容,此时从Hello变成了Pello,也就是H改成了P。如下图所示:

如果要改该物理地址的前三个字节,格式如:-d076A:0010 50 20 10

注意:内存中的修改字节是临时的,DOSBox重启就恢复原来的。

3.4 使用u命令将内存中的机器指令翻译成汇编指令,如下所示

其中PUSH AX 是汇编语言中用于临时保存寄存器数据的一个最基本、最重要的操作

再次输入u命令继续往下查

3.5 使用 t 命令执行一条机器指令 ,单步执行程序

相关推荐
我在人间贩卖青春5 天前
汇编之伪指令
汇编·伪指令
我在人间贩卖青春6 天前
汇编之伪操作
汇编·伪操作
济6176 天前
FreeRTOS基础--堆栈概念与汇编指令实战解析
汇编·嵌入式·freertos
myloveasuka6 天前
汇编TEST指令
汇编
我在人间贩卖青春6 天前
汇编编程驱动LED
汇编·点亮led
我在人间贩卖青春6 天前
汇编和C编程相互调用
汇编·混合编程
myloveasuka7 天前
寻址方式笔记
汇编·笔记·计算机组成原理
请输入蚊子7 天前
《操作系统真象还原》 第六章 完善内核
linux·汇编·操作系统·bochs·操作系统真像还原
myloveasuka7 天前
指令格式举例
汇编·笔记·计算机组成原理
我在人间贩卖青春8 天前
汇编之分支跳转指令
汇编·arm·分支跳转