博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows7 Debug Test
阅读量:6893 次
发布时间:2019-06-27

本文共 1974 字,大约阅读时间需要 6 分钟。

Windows7 Debug Test

1.Introduction

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

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

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中。

Figure 2. DOSBox for Debug

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

mount c d:\MASM 
c: 
debug 
-

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

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后回车,在:提示后输入一个数值即可。

Figure 4. Modify AX by R command

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

2.2 D命令

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

Figure 5. D command

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

Figure 6. D command 

2.3 A命令

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

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使他们指向这个地址:

Figure 8. Modify CS & IP by R command

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

Figure 8. Run T command

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

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

转载地址:http://lkudl.baihongyu.com/

你可能感兴趣的文章
android Fragments详解二:创建Fragment
查看>>
知道创宇 - 中文版putty后门事件分析
查看>>
电子政务信息交换平台与数据中心的构建(转)
查看>>
妄撮小游戏的开发思想-Android开发资料-《妄撮(撕开美女衣服)》游戏源代码外传...
查看>>
用ethtool确定多网卡Linux服务器网口位置
查看>>
Perl分割字符串的一个精妙的写法
查看>>
零点祝福
查看>>
上下文属性监听
查看>>
【小白的CFD之旅】10 敲门实例
查看>>
POI文件导出至EXCEL,并弹出下载框
查看>>
iOS 使用正则表达式库RegexKitLite的问题
查看>>
C#使用MemoryStream类读写内存
查看>>
MySQL内存使用-线程独享
查看>>
JDBC连接MySQL数据库及演示样例
查看>>
【WP8.1开发】基于应用的联系人存储
查看>>
AI新时代-教你使用python+Opencv完成人脸解锁(附源码)
查看>>
MongoDB ( 三 )高级_状态返回和安全
查看>>
基于 Netty 的可插拔业务通信协议的实现「1」协议描述及基本消息对象设计
查看>>
NodeJS介绍以及开发微信公众号Example
查看>>
新时代前端的自我修养—2017 D2主题分享记录及我的思考
查看>>