debug常用命令介绍(学习汇编)

显示所有寄存器内容

格式:-r  功能:以十六进制形式显示cpu内部个寄存器的值;以符号形式显示标志寄存器的各标志位(除tf外)的值;并将CS:IP所指的内存内容反汇编成一条指令,可视为将要执行的指令。如:

-r   回车
AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0AF0  ES=0AF0  SS=0AF0  CS=0AF0  IP=0200   NV UP EI PL NZ NA PO NC
0AF0:0200 B238          MOV     DL,38
知:cs=0AF0h,IP=0100h

修改寄存器
格式:-r  寄存器名 
-r ds
DS 0AF
:0AE0
-r
ds的内容由原来的0af0h修改为0ae0h

汇编命令 A(以汇编指令的格式在内存中写入一条机器指令)

格式:-A 内存地址

例:调用dos中02h号功能显示字符‘a’,将该程序汇编到1270:100h开始的内存中。
-A1270:100
1270:0100 mov,ah,2
1270:0102 mov,dl,61
1270:0104 int 21
1270:0106 int 20
1270:0108
-

反汇编命令 U
格式:-u 内存块  
功能:分三列显示反汇编的结果,第一列为指令首地址,第二列为16进制形式的指令机器码,第三列为指令的助记符。
-u 1270:100
1270:0100 B402          MOV     AH,02
1270:0102 B261          MOV     DL,61
1270:0104 CD21          INT     21
1270:0106 CD20          INT     20
1270:0108 0000          ADD     [BX+SI],AL
1270:010A 0000          ADD     [BX+SI],AL
1270:010C 0000          ADD     [BX+SI],AL
1270:010E 0000          ADD     [BX+SI],AL
1270:0110 0000          ADD     [BX+SI],AL
1270:0112 0000          ADD     [BX+SI],AL
1270:0114 0000          ADD     [BX+SI],AL
1270:0116 0000          ADD     [BX+SI],AL
1270:0118 0000          ADD     [BX+SI],AL
1270:011A 0000          ADD     [BX+SI],AL
1270:011C 0000          ADD     [BX+SI],AL
1270:011E 0000          ADD     [BX+SI],AL
-

1.单步执行
格式:-t=内存地址回车
格式:-p=内存地址 回车
功能:用命令中的内存地址的段地址和偏移地址修改cs和ip,然后执行由cs:ip指向的内存单元处的一条指令,显示各寄存器的值,并反汇编下一条指令,返回debug状态。
例:
-t=1270:100
AX=0200  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0AE0  ES=0AF0  SS=0AF0  CS=1270  IP=0102   OV UP EI NG NZ NA PO NC
1270:0102 B261          MOV     DL,61
-
执行结果:ah=2,cs值不变,ip的值增加2,cs:ip指向第二条指令

2.多步执行
格式:-t=内存地址  执行指令的条数
格式:-p=内存地址  执行指令的条数

命令t和p的不同:
one:带重复前缀rep/repnz/repz的串操作指令和loop/loopz/loopn等循环指令是与cs相关的指令。用t命令执行这类指令时,每执行一次,cx值减一,就停下来返回debug;而p命令执行时,一直执行到cx=0,执行其后的下一条指令,才返回debug
two:调用指令call及中断调用指令int,由于这类指令修改了cs和ip,使程序结构产生转向。用t命令则在cs:ip(子程序)入口处停下来返回debug,可用t命令进行跟踪。而用p命令则显示call和int的下一条指令
如:分别用t和p执行1270:0140h处的指令int 21h。

-t=1270:104

AX=0200  BX=0000  CX=0000  DX=0000  SP=FFE8  BP=0000  SI=0000  DI=0000
DS=0AE0  ES=0AF0  SS=0AF0  CS=00A7  IP=107C   OV UP DI NG NZ NA PO NC
00A7:107C 90            NOP
-p=1270:104

AX=0200  BX=0000  CX=0000  DX=0000  SP=FFE8  BP=0000  SI=0000  DI=0000
DS=0AE0  ES=0AF0  SS=0AF0  CS=1270  IP=0106   OV UP DI NG NZ NA PO NC
1270:0106 CD20          INT     20

3.连续执行
-g=内存地址

4.断点执行
格式:-g=内存地址 断点地址

1.显示命令  d
格式:-d 内存块
例:显示-d1270:100h到1210内存块的内容
-d1270:100 l30
1270:0100  B4 02 B2 61 CD 21 CD 20-00 00 00 00 00 00 00 00   ...a.!. ........
1270:0110  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
1270:0120  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................

2.修改命令 e
格式1:-e 内存地址  字符或数值串
格式2:-e 内存地址

3.填充指令
格式:-f 内存块 字符或数值串
例:-f ds:2000 2100 ‘hello world’

4.搜索指令 s
格式:-s 内存块 字符或数值串

5.移动指令  m
格式:-m 内存块1  内存块2的首地址
功能:将内存块1的内容复制到内存块2,内存块1内容不变

6.比较指令 c
格式:-c 内存块1 内存块2的首地址

(5)读写磁盘
1.指定文件命令 N
格式:-N[d:][PATH]文件名.扩展名   回车
功能:为命令L和命令W指定文件,其中[d:][PATH]为文件所在的盘号和路径。

2.写入命令 W
格式:-W 内存地址  回车
功能:将指定内存块的内容写到由命令N指定的文件中,其中内存块的首地址命令W指定,内存块的大小由BX,CX两寄存器决定,BX存放内存块大小的高字节,CX存放内存块大小的低字节。

3.装入命令L块
格式:-L内存地址 回车
功能:将命令N指定的文件装入到命令L给出的内存地址开始处。文件固定装入到CS:IP处。

4.装入可执行的.EXE或.COM文件
通常在调试可执行的.EXE或.COM文件时,可以不用N和L命令来装入,而直接在进入debug的命令后加上要装入的文件。
格式:>[d:][path]debug 文件名.扩展名  回车
功能:将命令中指定的文件装入到内存CS:IP处

例:把从1270:100h开始30h个字节的内存块内容写到D盘的根目录AA.DAT文件中
-n I:aa.dat              ;用命令N指定文件名
-r bx             ;修改BX的值    
BX 0000                  
:0                        ;bx=0h,存放文件长度的高位值
-r cx
CX 0010
:30                       ;cx=30h,存放文件长度的低位值
-w 1270:100               ;将指定的内存块写到aa.dat文件上。
Writing 00030 bytes

例:将I盘根目录下的aa.dat文件调到内存CS:100h开始处。
-n I:aa.dat  回车
-l cs:100    回车
-u cs:100    回车
1270:0100 B402          MOV     AH,02
1270:0102 B261          MOV     DL,61
1270:0104 CD21          INT     21
1270:0106 CD20          INT     20
1270:0108 0000          ADD     [BX+SI],AL
1270:010A 0000          ADD     [BX+SI],AL
1270:010C 0000          ADD     [BX+SI],AL
1270:010E 0000          ADD     [BX+SI],AL
1270:0110 0000          ADD     [BX+SI],AL
1270:0112 0000          ADD     [BX+SI],AL
1270:0114 0000          ADD     [BX+SI],AL
1270:0116 0000          ADD     [BX+SI],AL
1270:0118 0000          ADD     [BX+SI],AL
1270:011A 0000          ADD     [BX+SI],AL
1270:011C 0000          ADD     [BX+SI],AL
1270:011E 0000          ADD     [BX+SI],AL

(6)I/O端口地址
1.输入命令
格式:-I 端口地址  回车
功能:将指定端口的内容输入到AL寄存器,并显示该值。
2.输出命令
格式:-o 端口地址  数值   回车
功能:将命令中的数值输出到指定端口中

(7)十六进制加减
格式:-h 数值1 数值2

(8)退出命令
q

debug常用命令介绍(学习汇编),布布扣,bubuko.com

时间: 2024-12-26 07:26:05

debug常用命令介绍(学习汇编)的相关文章

转:maven常用命令介绍

mvn 3.0.4 创建maven项目命令 mvn  archetype:generate   -DgroupId=damocles-autocredit -DartifactId=damocles-autocredit  -DarchetypeArtifactId=maven-archetype-quickstart     -DinteractiveMode=false  -X 1 下载源代码:mvn dependency:sources -DdownloadSources=true -Dd

maven常用命令介绍

mvn 3.0.4 创建maven项目命令 mvn  archetype:generate   -DgroupId=damocles-autocredit -DartifactId=damocles-autocredit  -DarchetypeArtifactId=maven-archetype-quickstart     -DinteractiveMode=false  -X 1 下载源代码:mvn dependency:sources -DdownloadSources=true -Dd

linux系统防火墙相关问题及常用命令介绍

今天介绍关于linux系统防火墙:centos5.centos6.redhat6系统自带的是iptables防火墙,centos7.redhat7自带firewall防火墙,ubuntu系统使用的是ufw防火墙.本平台www.gxdeqiong.com 安装的是iptables防火墙(其他云服务供应商可能使用的是其他防火墙). 防火墙导致服务不正常的问题: 在服务器安装某些服务之后,服务无法连接.无法正常启动等情况.查看下系统防火墙有没开放相关的服务端口.(linux系统防火墙开放相关端口后还要

Linux常用命令介绍

Linux常用命令示例: 在使用Linux操作系统的过程中,我们经常要用到一些特殊的命令,不仅显示了技术的高超,而且在效率方面当然要比图像化界面高很多,下面我总结了一些常见的Linux命令,供以后学习使用,使用命令时,在命令后面加参数"--help"或者用"man 命令"可以取得命令的详细用法. (*)小常识:在Linux中使用命令操作文件时,可以仅输入文件名的前几个字符,然后按键盘的"Tab"键补全文件名的后面部分,若输入的字符是多个文件名的起

Linux基础常用命令大全学习

1.ls命令 就是list的缩写,通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录.文件夹.文件权限)查看目录信息等等 常用参数搭配: ls -a 列出目录所有文件,包含以.开始的隐藏文件 ls -A 列出除.及..的其它文件 ls -r 反序排列 ls -t 以文件修改时间排序 ls -S 以文件大小排序 ls -h 以易读大小显示 ls -l 除了文件名之外,还将文件的权限.所有者.文件大小等信息详细列出来 实例: (1) 按易读方式按时间反序排序,并显

Nginx常用命令介绍

Nginx常用命令 Nginx PID位置 /var/run/nginx.pid Nginx关闭 Nginx支持以下几种信号控制: - TERM, INT 快速关闭 - QUIT 从容关闭 - HUP 平滑重启 - USR1 重新打开日志文件,在切割文件时用处大 - USR2 平滑升级 - WINCH 从容关闭工作进程 #从容停止Nginx ? kill -QUIT master进程号 ? #快速停止Nginx ? kill -TERM master进程号 ? #强制停止Nginx ? kill

Git基础(常用命令)介绍

版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统. 关于版本控制分为三种:本地版本控制系统,如rcs:集中化的版本控制系统,如CVS.SVN:分布式版本控制系统,如Git. Git基础要点 Git和其它版本控制系统的主要差别在于:Git只关心文件数据的整体是否发生变化,而大多数其它系统则只关心文件内容的具体差异. 对于任何一个文件,在Git内都只有三种状态:已提交(committed).已修改(modified)和已暂存(staged).已提交表示该文件已经被安全地保存在本

redis数据类型及常用命令介绍(图文实例)

上图中即为redis中5种基本数据类型,在没接触过redis之前,听过最多相关的字眼就是键值对key-value之类,立马让我想到了HashMap.在HashMap中,key和value的的数据类型都可以指定,value也可以是HashMap类型.而在这里,redis的基本数据类型是针对的value,有这5种. 文中所用测试记录环境在Linux下,命令操作在SSH客户端下,这里使用的是Xshell 5,个人使用感觉很方便,同一系列的Xftp 5用于远程文件上传操作也很不错.如有需要,可直接进入官

MySQL更改root密码、连接MySQL、MySQL常用命令介绍

更改MySQL数据库root密码 1. 首次进入数据库是不用密码的,如下所示: [[email protected] ~]# /usr/local/mysql/bin/mysql -uroot //使用绝对路径进入mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.6.35 MySQL Community Server (GPL