Windows7 Debug Test

简介: Windows7 Debug Test eryar@163.com 1.Introduction 在郁大师的影响下,很早之前买了本王爽老师的《汇编语言》,可惜一直闲置,今天终于得空,可以学习起来了。

Windows7 Debug Test

eryar@163.com

1.Introduction

在郁大师的影响下,很早之前买了本王爽老师的《汇编语言》,可惜一直闲置,今天终于得空,可以学习起来了。为了使学习效果更好,还是写点东西记录下来,一方面巩固下知识点,一方面起到一个监督作用。

毕竟不是计算机专业科班出身,这些计算机基础知识只有靠自学。意识到汇编的重要性是从大师可以反汇编和逆向一些软件开始的。汇编在Debug的过程中也有重要作用,如在Debug时看到这种界面,总是有想理解其意义的好奇心:

wps_clip_image-15646

Figure 1. Disassembly and Registers in Visual Studio

通过反汇编代码,对程序的运行情况更加清晰。学习汇编的两个目的:充分获得底层编程的体验,深刻理解机器运行程序的机理。知道了来胧去脉,在应用的过程中才能更加自信。

本文主要介绍在Windows7中运行debug,并在debug程序中执行汇编代码,从而方便理论知识的学习。

2.Run Debug in Windows7 

Debug是DOS, Windows提供的实模式(8086)程序的调试工具,使用它可以查看CPU各种寄存器、内存情况和在机器码级跟踪程序的运行。因为debug程序是16位的,在64位的Windows7中无法运行,所以根据网上的方法,先安装一个DOS模拟环境,再运行debug。

分别下载工具DOS BOX和32位机器上的debug,这里给出DOSBOX和MASM,其中Debug包含在MASM中。

wps_clip_image-27561

Figure 2. DOSBox for Debug

安装好DOSBox后,将MASM放到D盘中,运行如下命令来运行Debug:

mount c d:\MASM 

c: 

debug 

-

就可以显示CPU中的相关信息,如下图所示:

wps_clip_image-32082

Figure 3. Debug in DOSBox

Debug的命令比较多,下面简单介绍几个常用的:

v R命令:查看、修改CPU寄存器的内容;

v D命令:查看内存中的内容;

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

v T命令:执行一条机器指令;

2.1 R命令

CPU的寄存器有AX,BX,CX,DX,CS,IP等,通过R命令,可以查看这些寄存器中的信息。若要修改一个寄存器的值,比如AX中的值,可用R命令后加寄存器名来进行,输入r ax后回车,在:提示后输入一个数值即可。

wps_clip_image-15649

Figure 4. Modify AX by R command

可以采用同样的方式来修改其他寄存器中的内容,如IP,CS等。

2.2 D命令

Debug的D命令可以查看内存中的内容,直接输入D命令后,会给出默认内存地址的信息,如下图所示:

wps_clip_image-5542

Figure 5. D command

也可以用“d 段地址:偏移地址”来列出指定内存单元中的信息,如下图所示:

wps_clip_image-17178

Figure 6. D command 

2.3 A命令

Debug的A命令以汇编指令形式在内存中写入机器指令。这样就可以方便测试汇编代码的效果。如下图所示向1000:0中写入汇编指令:

wps_clip_image-20324

Figure 7. Write Assembly Code by A Command

如上图所示,在A命令后跟上地址,然后就可以向相应地址中写入汇编指令。再用D命令查看内存时,就可以看到相应的机器码。有了汇编代码,如何运行呢?需要用到T命令。

2.4 T命令

T命令用于执行CS:IP指向的内存单元处的指令。所以要执行A命令写的汇编指令,需要先通过R命令修改CS和IP寄存器的内容,使他们指向A命令汇编指令所在的内存地址。如上图所示的A命令是将汇编指令写到1000:0处,所以修改CS和IP使他们指向这个地址:

wps_clip_image-32639

Figure 8. Modify CS & IP by R command

上图所示为修改CS和IP后,通过R命令显示出结果。修改CS和IP后,就可以运行T命令来执行我们写入的指令了。

wps_clip_image-30584

Figure 8. Run T command

运行一次T命令后,就执行了一条汇编指令,这里执行了mov ax,1,执行后CS:IP指向了下条指令的地址,这样再执行一次T命令,就执行了mov bx,2,如下图所示:

wps_clip_image-8485

Figure 9. Run T Command

运行T命令后,执行了mov bx,2,将BX中的内容改为2了。

3.Conclusion

学习汇编语言,对理解程序的运行机理有个清晰认识,是想从事计算机科学方面工作的必不可少的基础。

通过安装DOSBox从而在Windows7中运行debug。并通过debug的几个命令来熟悉简单的汇编指令。最后通过A,R和T命令,在debug中运行汇编指令。

4.References

1. 王爽. 汇编语言. 清华大学出版社. 2013

Dowload DOSBox & MASM

目录
相关文章
|
9月前
|
Windows
windows逆向 -- Debug工具简介
windows逆向 -- Debug工具简介
232 0
|
Windows
windows逆向 -- Debug工具简介
windows逆向 -- Debug工具简介
187 0
windows逆向 -- Debug工具简介
|
C++ Windows
Windows 10无法使用debug的解决方案
Windows 10无法使用debug的解决方案
672 0
Windows 10无法使用debug的解决方案
|
数据安全/隐私保护 Windows
Windows64位系统进入debug模式
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hanniel/article/details/79506003 Debug 是DOS、Windows 提供的实模式(8086方式)程序的调试工具。
1408 0
|
API Windows 安全
玩转Windows服务系列——Debug、Release版本的注册和卸载,及其原理
原文:玩转Windows服务系列——Debug、Release版本的注册和卸载,及其原理 Windows服务Debug版本 注册 Services.exe -regserver 卸载 Services.exe -unregserver Windows服务Release版本 注册 Services.exe -service 卸载 Services.exe -unregserver 原理 Windows服务的Debug、Release版本的注册和卸载方式均已明确。
945 0
|
API Windows
Windows下Debug模式的检测和OutputDebugString
对于应用程序是否处于某个用户调试模之下,可以使用如下API进行检测:    BOOL WINAPI IsDebuggerPresent(void); (使用CheckRemoteDebuggerPresent查看特定进程) 使用它可以使得程序改变Debug模式下的行为。
1078 0
|
2天前
|
安全 网络安全 数据安全/隐私保护
Windows Server 2025 Active Directory 重置用户密码
密码重置是管理员日常任务之一,用户因忘记或多次输错密码导致账户锁定时需进行重置。本文介绍在Active Directory服务器上重置密码的三种方法。
|
2月前
|
安全 关系型数据库 MySQL
Windows Server 安装 MySQL 8.0 详细指南
安装 MySQL 需要谨慎,特别注意安全配置和权限管理。根据实际业务需求调整配置,确保数据库的性能和安全。
239 9
|
3月前
|
网络安全 Windows
Windows server 2012R2系统安装远程桌面服务后无法多用户同时登录是什么原因?
【11月更文挑战第15天】本文介绍了在Windows Server 2012 R2中遇到的多用户无法同时登录远程桌面的问题及其解决方法,包括许可模式限制、组策略配置问题、远程桌面服务配置错误以及网络和防火墙问题四个方面的原因分析及对应的解决方案。
218 4