程序执行过程的跟踪:(用debug来跟踪一个程序的运行过程) 整理总结

本文详细介绍了在DOS环境下程序的加载过程及如何使用Debug工具逐步执行程序,包括程序加载原理、Debug命令的应用等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.理由:在DOS中运行一个程序的时候,是由command将程序可执行文件中加载入内存,
并得以执行的。但是我们看不到程序逐步执行的过程,因为command的程序加载和设置cs:IP指向程序的入口的操作是连续完成的,而当cs:ip一指向程序的入口,command就放弃了cpu的控制权,cpu立即开始执行程序,直到程序结束。
2.目的:为了观察程序的执行过程,可以使用Debug。Debug可以把程序加载入内存,设置CS:IP执行程序的入口,但是Debug不放弃对cpu的控制,故可以用Debug逐步执行程序。
3方法:
(1)在提示符后输入:debug target.exe,按下enter键后,Debug将程序target.exe加载入内存,进行行相关的初始化后设置cs:ip指向程序的入口。
(2)用r命令查看各个寄存器的值可知:cx中放的是程序的长度。
(3)DOS系统中.exe文件中的程序加载过程。这里面主要的是理解:为什么程序的地址被设置为:SA+10H:0,下面是我的理解:在图4.20的第二步骤中,它有这样一句话:在这段内存区的前256个字节中,创建了psp的数据区。同时在第三步骤中有这样的一句话:从这段内存区的256字节处开始将程序装入。这段内存区的起始地址为SA,同时又有256字节的内存已被占用,而256用16进制表示就是100h,用偏移地址表示就是10H:0,转换成十进制表示是1×16×16=256。综上所述,程序的地址被设置成SA+10H:0,其实这里的关键是要看到10H:0 =0100H,同时10H:0是一个整体。也许这样看会更清楚:((10H:0)+SA)。所以CS:IP的值就是((10H:0)+SA),最后段地址放入了DS中即DS=SA.
(4)接下来可以使用Debug中的命令如r,t,a,u,等来对程序进行调试,但是执行到int 21 时,因该用p命令去执行,然后程序将会正常停止。
(5)使用debug加载程序时的顺序是:command加载Debug,Debug加载target.exe。返回的顺序是:从target.exe中的程序返回到Debug,从Debug返回到command。

在安全网上逛的时候,突然发现一篇很好的文章!详细阐述了当前流行的api hook技术,rootkit技术和主动防御技术,涉及到深入的操作系统知识,需要一定的功底才能看懂,真的很不错,可以说是一篇难得的教程!现摘选如下: 一. 黑匣子的原理 对于一般用户而言,一个程序从开始运行直到结束,这期间内都做过什么,并不是我们需要关心的事情,他们只要听到播放器里的音乐、看到电影画面、和远方的朋友用通讯工具聊天就可以了,有谁会去关心从用户点击播放器程序图标到音乐响起的时间里,这个程序具体做了什么事情呢?然而,如果面对的程序是恶意软件之流,用户就不得不关心一下它到底对自己的计算机造成什么影响了。 程序运行期间所进行的操作被称为“程序行为”(Action),一般泛指程序进行的相对表现较明显的操作,例如创建读写文件、访问注册表、连接网络等,而在这些操作之外做的程序内部运算、判断、逻辑等操作并不是我们需要关心的,除非是对它进行复杂的分析如逆向工程。对程序行为进行监视记录的过程就是“跟踪”(Tracing),如果要进一步深入,则要使用调试器(Debugger)环境进行汇编级的指令分析,这就是“调试”(Debugging),也可视为更全面的跟踪,因为调试过程可观察到整个程序里的运算和每一步过程。 也许很多用户会觉得,这些复杂技术距离我们很远,甚至会想像为需要复杂设备和程序才能完成,其实,这些技术的应用范围,一直就在我们身边。如果你正在使用一款防毒产品,那么你系统里执行的程序就已经处于被记录行为的状态了;如果你使用HIPS产品,就会更强烈的感受到程序运行被监视着;如果你正在使用调试器,那就不用我说了吧…… 在Windows系统里,至少有三种技术可以实现程序行为的记录,甚至控制程序的某些行为,分别是“虚拟机”(VM)、“API钩子”(API Hooking)和“API跟踪”(API Tracing)。 应用广泛的虚拟机技术 经常提到的虚拟机技术有两种,一种是普遍应用上的虚拟机技术,它是通过软件模拟的具有完整硬件系统功能的、运行一个完全隔离环境中的完整计算机系统,此类虚拟机的概念比较广泛,可以是一种使用软件模拟一个完整的计算机硬件环境技术如VMWare,也可以是介于硬件和编译程序之间的交互介质,如Java虚拟机等;另一种则是反病毒产品中使用的“通用解密器”技术,为了检测一些复杂或者代码加密的病毒,杀毒引擎必须让它运行起来以便自我暴露危险程序行为,但是如果病毒真的在用户计算机里运行了,就违背反病毒产品的初衷了,因此反病毒产品也采取了一种虚拟环境检测方法,这就是虚拟机技术,但是这个技术并非是为病毒提供一套计算机仿真系统,这样就太庞大复杂和消耗资源了,这种虚拟机是指杀毒引擎模拟出一个仿真CPU,这个“CPU”具备和真正CPU等同的指令分析功能,杀毒引擎将待检测的程序代码读入“CPU”中逐条指令循环执行,直到出现特定情况才结束工作,在这个过程中探知程序是否具备病毒行为特征或者暴露出病毒特征码。这就是杀毒引擎的“虚拟机技术”,它的目的就是让程序文件在没有实际运行的情况下得到运行后的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值