posts - 330, comments - 534, trackbacks - 0, articles - 0

Windows7 Debug Test

Posted on 2016-04-09 17:44 eryar 阅读(999) 评论(0)  编辑 收藏 引用 所属分类: 6.Others

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


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理