一种仿真运行可执行文件时抓取现场的方法及计算设备技术

技术编号:35708855 阅读:13 留言:0更新日期:2022-11-23 15:07
本发明专利技术公开了一种仿真运行可执行文件时抓取现场的方法及计算设备,涉及计算机技术领域。方法包括:通过仿真器将第二应用程序的可执行文件的第二架构指令转换为第一架构指令,由第一架构处理器执行;在第一架构处理器的中断现场,获取输入的第一调试扩展命令并执行,以侦测中断现场的第二架构现场结构体上下文,基于其中的第二寄存器进行栈回溯,以便获取第二架构现场的调用栈;在第一架构处理器的中断现场,获取输入的第二调试扩展命令并执行,以侦测中断现场的第二架构现场结构体上下文,获取第二架构现场的寄存器信息。根据本发明专利技术的技术方案,可以实现在第一架构中断现场直观地查看第二架构现场的调用栈和寄存器信息。看第二架构现场的调用栈和寄存器信息。看第二架构现场的调用栈和寄存器信息。

【技术实现步骤摘要】
一种仿真运行可执行文件时抓取现场的方法及计算设备


[0001]本专利技术涉及计算机
,尤其涉及一种仿真运行可执行文件时抓取现场的方法及计算设备。

技术介绍

[0002]随着计算机的不断更新换代,操作系统也不断升级。Windows操作系统曾占有了计算机操作系统的绝大部分市场,Windows操作系统上的软件生态也极其丰富。近些年,随着Linux操作系统的兴起,越来越多的计算机选择使用Linux操作系统。因硬件和系统接口不支持等原因,Windows操作系统的软件无法在Linux操作系统上运行。
[0003]根据CPU架构的不同,在X86、X86_64架构的Linux系统上,可以使用Wine(Wine is not an emulator,通过在X86架构的 Linux系统上实现Windows的系统函数,使得Windows程序在X86架构的Linux系统上可以正常运行的兼容层)来兼容运行Windows操作系统的软件,Windows软件的执行入口是PE文件。但是Wine只提供了X86和X86_64架构的支持,ARM架构无法直接运行Wine。在ARM架构的Linux系统上,需要使用box86来仿真运行Wine。
[0004]在执行PE文件时,是依靠X86架构的CPU来一条一条地执行对应的X86指令,box86的原理是对X86指令进行解析,翻译成ARM指令来执行,或者,使用c代码模拟X86指令的功能来实现其行为。但是box86仍然存在一些指令未翻译或指令翻译不完善的问题,健壮性不足,这导致在通过box86仿真运行Wine去兼容执行Windows软件的时候,经常会出现运行错误。错误表现可能是:软件执行结果不符合预期、软件执行过程中崩溃、软件执行过程中卡死等。
[0005]为了解决这些错误,需要使用gdb对box86进行调试。而在对box86的调试过程中,由于X86指令被翻译为ARM指令存放在堆中执行,或模拟成c代码执行,导致出错的现场无法直观的对应到X86指令的错误现场。
[0006]为此,需要一种仿真运行可执行文件时抓取现场的方法,解决上述方案中存在的问题。

技术实现思路

[0007]随着计算机的不断更新换代,操作系统也不断升级。Windows操作系统曾占有了计算机操作系统的绝大部分市场,Windows操作系统上的软件生态也极其丰富。近些年,随着Linux操作系统的兴起,越来越多的计算机选择使用Linux操作系统。因硬件和系统接口不支持等原因,Windows操作系统的软件无法在Linux操作系统上运行。
[0008]根据CPU架构的不同,在X86、X86_64架构的Linux系统上,可以使用Wine(Wine is not an emulator,通过在X86架构的 Linux系统上实现Windows的系统函数,使得Windows程序在X86架构的Linux系统上可以正常运行的兼容层)来兼容运行Windows操作系统的软件,Windows软件的执行入口是PE文件。但是Wine只提供了X86和X86_64架构的支持,ARM架构无法直接运行Wine。在ARM架构的Linux系统上,需要使用box86来仿真运行Wine。
[0009]在执行PE文件时,是依靠X86架构的CPU来一条一条地执行对应的X86指令,box86的原理是对X86指令进行解析,翻译成ARM指令来执行,或者,使用c代码模拟X86指令的功能来实现其行为。但是box86仍然存在一些指令未翻译或指令翻译不完善的问题,健壮性不足,这导致在通过box86仿真运行Wine去兼容执行Windows软件的时候,经常会出现运行错误。错误表现可能是:软件执行结果不符合预期、软件执行过程中崩溃、软件执行过程中卡死等。
[0010]为了解决这些错误,需要使用gdb对box86进行调试。而在对box86的调试过程中,由于X86指令被翻译为ARM指令存放在堆中执行,或模拟成c代码执行,导致出错的现场无法直观的对应到X86指令的错误现场。
[0011]为此,需要一种仿真运行可执行文件时抓取现场的方法,解决上述方案中存在的问题。
附图说明
[0012]为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
[0013]图1示出了根据本专利技术一个实施例的计算设备100的示意图;图2示出了根据本专利技术一个实施例的计算设备100中运行有第一操作系统220的示意图;图3示出了根据本专利技术一个实施例的仿真运行可执行文件时抓取现场的方法300的流程示意图;图4示出了根据本专利技术一个实施例的仿真运行可执行文件时抓取现场的方法的时序图;图5示出了根据本专利技术一个实施例的调用栈的分布示意图。
具体实施方式
[0014]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0015]图1示出了根据本专利技术一个实施例的计算设备100的示意图。如图1所示,在基本配置中,计算设备100包括至少一个处理单元102和系统存储器160。根据一个方面,取决于计算设备的配置和类型,处理单元102可以实现为处理器。在本专利技术的实施例中,处理单元102可以实现为第一架构处理器。在一个实施例中,第一架构处理器例如可以为ARM处理器。系统存储器160包括但不限于易失性存储(例如,随机存取存储器)、非易失性存储(例如,只读存储器)、闪速存储器、或者这样的存储器的任何组合。根据一个方面,系统存储器160中包括操作系统150。
[0016]根据本专利技术的一个实施例,操作系统150可以实现为第一操作系统,适于运行第一操作系统的应用程序。
[0017]根据一个方面,操作系统150例如适合于控制计算设备100的操作。此外,示例结合图形库、其他操作系统、或任何其他应用程序而被实践,并且不限于任何特定的应用或系统。在图1中通过在虚线内的那些组件示出了该基本配置。根据一个方面,计算设备100具有额外的特征或功能。例如,根据一个方面,计算设备100包括额外的数据存储设备(可移动的和/或不可移动的),例如磁盘、光盘、或者磁带。这样额外的存储在图1中是由可移动存储设备109和不可移动存储设备110示出的。
[0018]如在上文中所陈述的,根据一个方面,在系统存储器160中存储有程序模块140。根据一个方面,程序模块140可以包括一个或多个应用程序,一个或多个应用程序可以包括直接运行在第一操作系统上的应用程序,还可以包括适配于第二操作系统的应用程序。这里,本专利技术不限制应用程序的类型,例如应用程序可以包括本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种仿真运行可执行文件时抓取现场的方法,在计算设备中执行,所述计算设备中包括第一架构处理器,并运行有第一操作系统;所述第一操作系统上布置有仿真器以及第二操作系统的兼容层,以便通过所述仿真器仿真运行所述兼容层、并基于兼容层运行第二操作系统的第二应用程序;所述方法包括:通过所述仿真器,将所述第二应用程序的可执行文件的第二架构指令转换为第一架构指令,由所述第一架构处理器执行,所述第一架构处理器的第一寄存器指向第二架构现场结构体;在所述第一架构处理器的中断现场,获取输入的第一调试扩展命令并执行,以侦测所述中断现场的第二架构现场结构体上下文,基于所述第二架构现场结构体上下文中的第二寄存器进行栈回溯,以便获取第二架构现场的调用栈;以及在所述第一架构处理器的中断现场,获取输入的第二调试扩展命令并执行,以侦测所述中断现场的第二架构现场结构体上下文,获取第二架构现场的寄存器信息。2.如权利要求1所述的方法,其中,在基于所述第二架构现场结构体上下文中的第二寄存器进行栈回溯之前,包括:基于所述第一架构处理器的第一寄存器,获取所述第二架构现场结构体。3.如权利要求1所述的方法,其中,所述兼容层适于加载所述可执行文件,并收集所述兼容层中预先置入的符号信息;在通过所述仿真器,将所述第二应用程序的可执行文件的第二架构指令转换为第一架构指令之前,包括:所述仿真器接收所述兼容层发送的符号信息;在获取第二架构现场的调用栈之后,包括:将所述符号信息与所述调用栈进行匹配,以得到第二架构现场的带符号调用栈。4.如权利要求3所述的方法,其中,通过所述仿真器,将所述第二应用程序的可执行文件的第二架构指令转换为第一架构指令,包括:通...

【专利技术属性】
技术研发人员:叶业顺
申请(专利权)人:统信软件技术有限公司
类型:发明
国别省市:

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

1