如何有效地进行动态跟踪分析

该文章转载自:中国企业信息在线《信息之舟》“电脑之家”“电脑安全防护中心”栏目http://www.kepusoft.com/all/safe/info/359.html

 

      在进行软件的破解、解密以及计算机病毒分析工作中,一个首要的问题是对软件及病毒进行分析。这些软件都是机器代码程序,对于它们分析必须使用静态或动态调试工具,分析跟踪其汇编代码。

一、从软件使用说明和操作中分析软件

  欲破解一软件,首先应该先用用这软件,了解一下功能是否有限制,最好阅读一下软件的说明或手册,特别是自己所关心的关键部分的使用说明,这样也许能够找点线索。

二、静态反汇编

    所谓静态分析即从反汇编出来的程序清单上分析,从提示信息入手进行分析。目前,大多数软件在设计时,都采用了人机对话方式。所谓人机对话,即在软件运行过程中,需要由用户选择的地方,软件即显示相应的提示信息,并等待用户按键选择。而在执行完某一段程序之后,便显示一串提示信息,以反映该段程序运行后的状态,是正常运行,还是出现错误,或者提示用户进行下一步工作的帮助信息。为此,如果我们对静态反汇编出来的程序清单进行阅读,可了解软件的编程思路,以便顺利破解。 常用的静态分析工具是W32DASM、IDA和HIEW等。


三、动态跟踪分析

 虽然从静态上可以了解程序的思路,但是并不可能真正了解地了解软件的细节,如静态分析找不出线索,就要动态分析程序,另外,碰到压缩程序,静态分析则无能为力了,只能动态分析动态分析是利用SOFTICE或TRW2000一步一步地单步执行软件。为什么要对软件进行动态分析呢?这主要是因为:

1、许多软件在整体上完成的功能,一般要分解成若干模块来完成,而且后一模块在执行时,往往需要使用其前一模块处理的结果,这一结果我们把它叫中间结果。如果我们只对软件本身进行静态地分析,一般是很难分析出这些中间结果的。而只有通过跟踪执行前一模块,才能看到这些结果。另外,在程序的运行过程中,往往会在某一地方出现许多分支和转移,不同的分支和转移往往需要不同的条件,而这些条件一般是由运行该分支之前的程序来产生的。如果想知道程序运行到该分支的地方时,去底走向哪一分支,不进行动态地跟踪和分析是不得而知的。

2、有许多软件在运行时,其最初执行的一段程序往往需要对该软件的后面各个模块进行一些初始始化工作,而没有依赖系统的重定位。

3、有许多加密程序为了阻止非法跟踪和阅读,对执行代码的大部分内容进行了加密变换,而只有很短的一段程序是明文。加密程序运行时,采用了逐块解密,逐块执行的方法。首先运行最初的一段明文程序,该程序在运行过程中,不仅要完成阻止跟踪的任务,而且还要负责对下一块密码进行解密。显然仅对该软件的密码部分进行反汇编,不对该软件动态跟踪分析,是根本不可能进行解密的

      由于上述原因,在对软件静态分析不行的条件下,就要进行动态分析了。那么如何有效地进行动态跟踪分析呢?一般来说有如下几点:

1、对软件进行粗跟踪

      所谓粗跟踪,即在跟踪时要大块大块地跟踪,也就是说每次遇到调用CALL指令重复操作指令REP.循环操作LOOP指令以及中断调用INT指令等,一般不要跟踪进去,而是根据执行结果分析该段程序的功能

2、对关键部分进行细跟踪

    对软件进行了一定程度的粗跟踪之后,便可以获取软件中我们所关心的模块或程序段,这样就可以针对性地对该模块进行具体而详细地跟踪分析。一般情况下,对关键代码的跟踪可能要反复进行若干次才能读懂该程序,每次要把比较关键的中间结果或指令地址记录下来,这样会对下一次分析有很大的帮助。软件分析是一种比较复杂和艰苦的工作,上面的几点分析方法,只是提供了一种基本的分析方法。要积累软件分析的经验需要在实践中不断地探索和总结。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 对于一个系统进行动态性能分析可以采用以下步骤: 1. 选择性能指标:确定系统的性能指标,例如响应时间、吞吐量、并发数等。 2. 收集性能数据:通过监控工具或代码埋点等方式,收集系统在运行时的性能数据。 3. 分析性能数据:对收集到的性能数据进行分析,可以使用各种分析工具和技术,例如直方图、散点图、回归分析等。 4. 确定性能瓶颈:根据性能数据分析结果,确定系统的性能瓶颈。 5. 优化性能瓶颈:根据性能瓶颈确定的原因,采取相应的优化措施,例如代码优化、资源调整等。 6. 持续监控:优化后需要对系统进行持续监控,确保性能指标得到改善,并及时发现新的性能问题。 ### 回答2: 动态性能分析是对系统在运行过程中性能表现的评估和分析。它可以帮助开发人员了解系统在不同负载和压力条件下的性能状况,从而提供优化和改进的建议。 动态性能分析的关键是采集和分析系统的运行数据。这可以通过多种手段实现,例如监控系统资源利用率、收集应用程序的性能指标和采样线程堆栈等。通过对这些数据进行分析和解读,我们可以了解系统的瓶颈、资源争用、调度延迟等问题,并找到可能的优化方案。 在进行动态性能分析时,我们可以使用一些工具和技术来辅助。例如,我们可以使用性能监控工具来实时监控系统的运行状态,包括CPU利用率、内存占用、网络吞吐量等。同时,我们还可以使用性能分析工具来采集应用程序的性能数据,例如函数调用时间、内存分配情况、磁盘IO等。通过这些工具的支持,我们可以深入了解系统的性能状况,并针对性地进行优化。 动态性能分析是一个持续的过程。我们可以在系统运行过程中进行实时的性能监控和数据采集,以及定期的性能分析和评估。通过这种方式,我们可以对系统的性能进行全面的了解,并及时发现和解决潜在的性能问题。 最后,动态性能分析对于系统的优化和改进至关重要。通过对系统的动态性能进行科学、系统和全面的分析,我们可以有效地找出系统的瓶颈,提升系统的吞吐能力和响应能力,从而提供更好的用户体验和服务质量。 ### 回答3: 动态性能分析是一种评估一个系统在运行时表现的方法。它的目的是识别系统存在的性能问题,并提供改进的方向。 首先,动态性能分析可以监测系统的资源利用率,如CPU的利用率、内存的使用情况以及磁盘和网络带宽的利用率。通过监测这些资源的使用情况,我们可以评估系统的负载情况,以及系统是否有明显的瓶颈。 其次,动态性能分析可以评估系统的并发性能。它可以跟踪系统的并发执行的线程数量、锁的竞争情况、队列的长度等,从而确定系统是否能够有效地处理并发请求,以及系统是否存在性能瓶颈。 此外,动态性能分析还可以评估系统的响应时间和吞吐量。通过测量系统处理请求的时间以及每秒钟可以处理的请求数量,我们可以了解系统的处理效率和性能水平。通过对系统各个组件的性能进行详细分析,我们可以找出系统中需要改进的部分,并采取相应的优化措施。 最后,动态性能分析可以帮助我们进行系统的调优和优化。通过识别系统中存在的性能问题,我们可以采取一系列的措施来提高系统的性能,如调整系统的配置参数、优化算法、增加硬件资源等。 总之,动态性能分析是评估和改进系统性能的重要手段。通过对系统资源的使用情况、并发情况、响应时间和吞吐量等指标的监测和分析,我们可以找出系统中存在的性能问题,并采取相应的措施来提高系统的性能和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值