程序运行轨迹的追踪方法、对比方法、装置及计算设备制造方法及图纸

技术编号:37667281 阅读:28 留言:0更新日期:2023-05-26 04:26
本发明专利技术公开了一种程序运行轨迹的追踪方法、对比方法、装置及计算设备,涉及计算机领域。本发明专利技术的程序运行轨迹的追踪方法包括:获取程序中待追踪代码段中的所有条件跳转指令。接着,针对每一条件跳转指令,将该条件跳转指令修改为软中断指令以调用钩子函数,钩子函数包括获取发生异常的异常地址和发生异常时标志寄存器的值、将软中断指令恢复为条件跳转指令并执行下一条指令,以及再次将条件跳转指令修改为软中断指令。最后,运行程序,并基于钩子函数获得的各异常地址和各标志寄存器的值,获取各条件跳转指令所在的地址和执行各条件跳转指令时的标志寄存器的值。本发明专利技术的程序运行轨迹的追踪方法既可保证数据的有效性,还能提升追踪的效率。升追踪的效率。升追踪的效率。

【技术实现步骤摘要】
程序运行轨迹的追踪方法、对比方法、装置及计算设备


[0001]本专利技术涉及计算机领域,尤其涉及一种程序运行轨迹的追踪方法、对比方法、装置及计算设备。

技术介绍

[0002]在计算机程序代码的开发过程中,有时会因异常或参数错误导致程序进入不正确的分支,出现运行崩溃或数据错误。此时,如若开发者拥有程序运行的所有源码,则可通过阅读源码结合调试的方法来对此问题进行定位。但是如若开发者没有完整的项目源码,例如调用了来自于闭源系统实现的某种功能的链接库,或者调用了属于某一个特定范畴由特定开发组或厂商实现的文件(主要为驱动文件),那么对于出现的错误则只能通过逆向的方式来追溯,而项目的代码量一旦较多,错误源头的追溯则将成为一个非常麻烦并且耗时的问题。
[0003]为此,本专利技术提供了一种程序运行轨迹的追踪方法以解决上述技术问题。

技术实现思路

[0004]为此,本专利技术提供了一种程序运行轨迹的追踪方法、对比方法、装置及计算设备,以力图解决或者至少缓解上面存在的问题。
[0005]根据本专利技术的一个方面,提供一种程序运行轨迹的追踪方法,包括:获取程序中待追踪代码段中的所有条件跳转指令;针对每一条件跳转指令,将该条件跳转指令修改为软中断指令以调用钩子函数,钩子函数包括获取发生异常的异常地址和发生异常时标志寄存器的值、将软中断指令恢复为条件跳转指令并执行下一条指令,以及再次将条件跳转指令修改为软中断指令;运行程序,并基于钩子函数获得的各异常地址和各标志寄存器的值,获取各条件跳转指令所在的地址和执行各条件跳转指令时的标志寄存器的值。
[0006]可选地,在根据本专利技术的程序运行轨迹的追踪方法中,获取程序中待追踪代码段中的所有条件跳转指令,包括:利用反汇编引擎获取待追踪代码段中的所有条件跳转指令。
[0007]可选地,在根据本专利技术的程序运行轨迹的追踪方法中,获取各条件跳转指令所在的地址和执行各跳转指令时的标志寄存器的值,包括:对在每一软中断指令处基于钩子函数获得的异常地址进行归一化处理,并将归一化处理后的地址确定为该软中断指令所对应的条件跳转指令所在的地址;将在每一软中断指令处基于钩子函数获得的标志寄存器的值,确定为执行该软中断指令所对应的条件跳转指令时的标志寄存器的值。
[0008]可选地,在根据本专利技术的程序运行轨迹的追踪方法中,待追踪代码段为程序中所链接的一链接库的代码段。
[0009]可选地,在根据本专利技术的程序运行轨迹的追踪方法中,对在每一软中断指令处基于钩子函数获得的异常地址进行归一化处理,包括:将在每一软中断指令处基于钩子函数获得的异常地址与链接库的基地址作差,并将得到的差值作为归一化处理后的地址。
[0010]可选地,在根据本专利技术的程序运行轨迹的追踪方法中,获取发生异常的异常地址,
包括:获取发生异常时的eip值,并将eip值作为异常地址。
[0011]根据本专利技术的又一个方面,提供一种程序运行轨迹的对比方法,包括:利用上述的程序运行轨迹的追踪方法,获取程序在第一操作系统运行时,程序中待追踪代码段中的各条件跳转指令所在的第一地址和执行各条件跳转指令时的第一标志寄存器的值;利用上述的程序运行轨迹的追踪方法,获取程序在第二操作系统运行时,程序中待追踪代码段中的各条件跳转指令所在的第二地址和执行各条件跳转指令时的第二标志寄存器的值;基于各第一地址和各第二地址,将执行各条件跳转指令时的第一标志寄存器的值和第二标志寄存器的值进行对比;当第一地址与第二地址相同,且第一地址对应的第一标志寄存器的值和第二地址对应的第二标志寄存器的值不同时,判定第一地址位置为程序运行轨迹出现差异的位置。
[0012]根据本专利技术的又一个方面,提供一种程序运行轨迹的追踪装置,包括:第一获取模块,适于获取程序中待追踪代码段中的所有条件跳转指令;指令修改模块,适于针对每一条件跳转指令,将该条件跳转指令修改为软中断指令以调用钩子函数,钩子函数包括获取发生异常的异常地址和发生异常时标志寄存器的值、将软中断指令恢复为条件跳转指令并执行下一条指令,以及再次将条件跳转指令修改为软中断指令;程序运行模块,适于运行程序,并基于钩子函数获得的各异常地址和各标志寄存器的值,获取各条件跳转指令所在的地址和执行各条件跳转指令时的标志寄存器的值。
[0013]根据本专利技术的又一个方面,提供一种程序运行轨迹的对比装置,包括:第二获取模块,适于利用上述的程序运行轨迹的追踪方法,获取程序在第一操作系统运行时,程序中待追踪代码段中的各条件跳转指令所在的第一地址和执行各条件跳转指令时的第一标志寄存器的值,还适于利用上述的程序运行轨迹的追踪方法,获取程序在第二操作系统运行时,程序中待追踪代码段中的各条件跳转指令所在的第二地址和执行各条件跳转指令时的第二标志寄存器的值;对比模块,适于基于各第一地址和各第二地址,将执行各条件跳转指令时的第一标志寄存器的值和第二标志寄存器的值进行对比;判定模块,适于当第一地址与第二地址相同,且第一地址对应的第一标志寄存器的值和第二地址对应的第二标志寄存器的值不同时,判定第一地址位置为程序运行轨迹出现差异的位置。
[0014]根据本专利技术的又一个方面,提供一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,程序指令被配置为适于由至少一个处理器执行,程序指令包括用于执行如上方法中的任一方法的指令。
[0015]根据本专利技术的又一个方面,提供一种存储有程序指令的可读存储介质,当程序指令被计算设备读取并执行时,使得计算设备执行如上方法中的任一方法。
[0016]根据本专利技术的程序运行轨迹的追踪方法,只对程序中待追踪代码段中的条件跳转指令的运行轨迹进行追踪。程序中的计算、比较、数据传输类等指令,均是按照顺序依次执行,不会产生预期之外的路径分支,无条件跳转指令、函数调用指令、函数返回指令等指令,其目标地址固定,也不会产生预期之外的路径分支,因此本专利技术通过记录条件跳转指令的运行轨迹来对程序的运行轨迹进行追踪的方法既可保证数据的有效性,还能提升追踪的效率。
[0017]并且,本专利技术在获取各条件跳转指令所在的地址时进行了归一化处理,如此则可使待追踪代码段中相同偏移的条件跳转指令在不同操作系统上的所在地址相同,这样只需
对相同地址所对应的标志寄存器值进行比对,便可快速的定位出待追踪代码段在不同操作系统上运行时,运行轨迹出现差异的位置,方便快捷。
附图说明
[0018]为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
[0019]图1示出了根据本专利技术一个实施例的运行一程序时执行各指令的示意图;
[0020]图2示出了根据本专利技术一个实施例的计算设备200的结构框图;
[0021]图3示出了根据本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种程序运行轨迹的追踪方法,包括:获取所述程序中待追踪代码段中的所有条件跳转指令;针对每一条件跳转指令,将所述条件跳转指令修改为软中断指令以调用钩子函数,所述钩子函数包括获取发生异常的异常地址和发生异常时标志寄存器的值、将所述软中断指令恢复为所述条件跳转指令并执行下一条指令,以及再次将所述条件跳转指令修改为所述软中断指令;运行所述程序,并基于所述钩子函数获得的各异常地址和各标志寄存器的值,获取各条件跳转指令所在的地址和执行各条件跳转指令时的标志寄存器的值。2.如权利要求1所述的方法,其中,获取所述程序中待追踪代码段中的所有条件跳转指令,包括:利用反汇编引擎获取所述待追踪代码段中的所有条件跳转指令。3.如权利要求1或2所述的方法,其中,获取各条件跳转指令所在的地址和执行各跳转指令时的标志寄存器的值,包括:对在每一软中断指令处基于所述钩子函数获得的异常地址进行归一化处理,并将归一化处理后的地址确定为该软中断指令所对应的条件跳转指令所在的地址;将在每一软中断指令处基于所述钩子函数获得的标志寄存器的值,确定为执行该软中断指令所对应的条件跳转指令时的标志寄存器的值。4.如权利要求3所述的方法,其中,所述待追踪代码段为所述程序中所链接的一链接库的代码段。5.如权利要求4所述的方法,其中,对在每一软中断指令处基于所述钩子函数获得的异常地址进行归一化处理,包括:将在每一软中断指令处基于所述钩子函数获得的异常地址与所述链接库的基地址作差,并将得到的差值作为归一化处理后的地址。6.如权利要求1

5中任一项所述的方法,其中,获取发生异常的异常地址,包括:获取发生异常时的eip值,并将所述eip值作为所述异常地址。7.一种程序运行轨迹的对比方法,包括:利用权利要求1

6中任一项所述的方法,获取所述程序在第一操作系统运行时,所述程序中待追踪代码段中的各条件跳转指令所在的第一地址和执行各条件跳转指令时的第一标志寄存器的值;利用权利要求1

6中任一项所述的方法,获取所述程序在第二操作系统运行时,所述程序中待追踪代码段中的各条件跳转指令所在的第二地址和执行各条件跳转指令时的第二标志寄存器的值;基于各所述第一地址和各所述第二地址,将执行各条...

【专利技术属性】
技术研发人员:杨堃冷周刘莉
申请(专利权)人:统信软件技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1