逆向基础--汇编基础(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 命令执行一条机器指令 ,单步执行程序

相关推荐
kyle~1 天前
x86 汇编LOCK前缀 --- 硬件架构向软件提供的核心同步原语
汇编·c++·性能优化·硬件架构·实时系统
典典分享指南2 天前
飞书 + 企业微信 + 微信文档多端协同实践指南
汇编·flask·intellij-idea·fastapi
极客互动API7 天前
企业微信 iPad 协议服务搭建与 AI 回调实战
网络·汇编·人工智能·微信·企业微信·ipad
wechatbot88812 天前
极客互动企业微信 SCRM 私域运营实战效果全景
大数据·汇编·微信·自动化·企业微信·rpa
祈禾17 天前
计算机组成原理之编译、汇编、链接、解释
开发语言·汇编·笔记·学习
水饺编程19 天前
AT&T 汇编语言学习笔记开篇语
c语言·汇编·c++
iCxhust19 天前
8088单板机VScode集成开发环境使用方法二(汇编版)
汇编·单片机·微机原理·8088单板机
·薯条大王20 天前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
txg66621 天前
VULOC:基于汇编切片的漏洞定位框架,精准锁定二进制中的危险代码
汇编·人工智能·深度学习·安全·网络安全
sunburn-22 天前
Java 队列全面详解:从入门到面试实战
java·开发语言·汇编·ide·idea