[发明专利]一种仿真运行可执行文件时抓取现场的方法及计算设备在审
申请号: | 202211314934.3 | 申请日: | 2022-10-26 |
公开(公告)号: | CN115374017A | 公开(公告)日: | 2022-11-22 |
发明(设计)人: | 叶业顺 | 申请(专利权)人: | 统信软件技术有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京瀚方律师事务所 11774 | 代理人: | 姜莹 |
地址: | 100176 北京市大兴区北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 仿真 运行 可执行文件 抓取 现场 方法 计算 设备 | ||
1.一种仿真运行可执行文件时抓取现场的方法,在计算设备中执行,所述计算设备中包括第一架构处理器,并运行有第一操作系统;
所述第一操作系统上布置有仿真器以及第二操作系统的兼容层,以便通过所述仿真器仿真运行所述兼容层、并基于兼容层运行第二操作系统的第二应用程序;
所述方法包括:
通过所述仿真器,将所述第二应用程序的可执行文件的第二架构指令转换为第一架构指令,由所述第一架构处理器执行,所述第一架构处理器的第一寄存器指向第二架构现场结构体;
在所述第一架构处理器的中断现场,获取输入的第一调试扩展命令并执行,以侦测所述中断现场的第二架构现场结构体上下文,基于所述第二架构现场结构体上下文中的第二寄存器进行栈回溯,以便获取第二架构现场的调用栈;以及
在所述第一架构处理器的中断现场,获取输入的第二调试扩展命令并执行,以侦测所述中断现场的第二架构现场结构体上下文,获取第二架构现场的寄存器信息。
2.如权利要求1所述的方法,其中,在基于所述第二架构现场结构体上下文中的第二寄存器进行栈回溯之前,包括:
基于所述第一架构处理器的第一寄存器,获取所述第二架构现场结构体。
3.如权利要求1所述的方法,其中,所述兼容层适于加载所述可执行文件,并收集所述兼容层中预先置入的符号信息;在通过所述仿真器,将所述第二应用程序的可执行文件的第二架构指令转换为第一架构指令之前,包括:
所述仿真器接收所述兼容层发送的符号信息;
在获取第二架构现场的调用栈之后,包括:
将所述符号信息与所述调用栈进行匹配,以得到第二架构现场的带符号调用栈。
4.如权利要求3所述的方法,其中,通过所述仿真器,将所述第二应用程序的可执行文件的第二架构指令转换为第一架构指令,包括:
通过调试工具对所述仿真器进行调试,并通过所述仿真器,将所述第二应用程序的可执行文件的第二架构指令转换为第一架构指令。
5.如权利要求4所述的方法,其中,在通过所述仿真器,将所述第二应用程序的可执行文件的第二架构指令转换为第一架构指令之前,包括:
所述仿真器接收所述调试工具发送的获取第二架构现场的请求;
所述方法还包括:
将所述第二架构现场的带符号调用栈和所述第二架构现场的寄存器信息,返回至所述调试工具。
6.如权利要求1-5中任一项所述的方法,其中,通过所述仿真器,将所述第二应用程序的可执行文件的第二架构指令转换为第一架构指令,由所述第一架构处理器执行,还包括:
所述仿真器拦截执行所述第一架构指令时调用的函数,并将所述函数封装后转发到第一操作系统。
7.如权利要求1-5中任一项所述的方法,其中,所述第一寄存器为r0寄存器,所述第二寄存器为ebp寄存器。
8.如权利要求1-5中任一项所述的方法,其中,
所述第一架构为ARM架构,所述第二架构为X86架构;
所述第一操作系统为Linux操作系统,所述第二操作系统为Windows操作系统。
9.一种计算设备,包括:
至少一个处理器;以及
存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1-8中任一项所述的方法的指令。
10.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-8中任一项所述方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于统信软件技术有限公司,未经统信软件技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211314934.3/1.html,转载请声明来源钻瓜专利网。