[发明专利]一种实现指令集模拟器正逆双向执行的方法有效
申请号: | 201610906730.7 | 申请日: | 2016-10-17 |
公开(公告)号: | CN106557352B | 公开(公告)日: | 2019-08-09 |
发明(设计)人: | 郑小萌;江云松;高栋栋;贾春鹏;滕俊元;虞砺琨;朱倩 | 申请(专利权)人: | 北京轩宇信息技术有限公司 |
主分类号: | G06F9/455 | 分类号: | G06F9/455;G06F11/36 |
代理公司: | 中国航天科技专利中心 11009 | 代理人: | 陈鹏 |
地址: | 100190 北京市海淀区科学院*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 一种实现指令集模拟器正逆双向执行的方法,首先使用指令集模拟器对软件进行执行,得到多个关键记录时间点对应的指令集模拟器的处理器运行状态、寄存器状态、内存状态、外设状态,然后获取外部执行命令,在正向执行的过程中,如果需要进行逆向执行,则获取需要逆向执行的起始时间点,最后使用时间粒度或需要逆向执行的终止时间点计算关键记录时间点,并恢复关键记录点的指令集模拟器的处理器运行状态、寄存器状态、内存状态、外设状态,正向执行到需要逆向执行的终止时间点,完成指令集模拟器正逆双向执行。 | ||
搜索关键词: | 一种 实现 指令 模拟器 双向 执行 方法 | ||
【主权项】:
1.一种实现指令集模拟器正逆双向执行的方法,其特征在于包括如下步骤:步骤1、使用指令集模拟器对软件进行执行,在软件执行过程中记录并存储执行开始时指令集模拟器的处理器运行状态、寄存器状态、内存状态、外设状态,其中,外设状态包括软件执行所使用的虚拟的定时器、总线、中断控制器、FPGA、传感器的内部数据;每隔时间T记录并存储指令集模拟器的处理器运行状态、寄存器状态、内存状态、外设状态直至软件执行结束,将起始开始时间、每个记录时间点记为关键记录时间点,得到关键记录时间点集合;所述的起始开始时间为软件执行开始的时间;其中,T为正数,关键记录时间点为指令集模拟器中的仿真时间,每个关键记录时间点均会记录并存储指令集模拟器的处理器运行状态、寄存器状态、内存状态、外设状态;所述的关键记录时间点集合还包括通过如下方法获得的时间点:步骤11、从外部获取需要进行逆向调试的参考时间点并记为ti,在0‑ti中寻找最接近ti的关键记录时间点;步骤12将步骤11得到的关键记录时间点与ti的中间时间点作为新的关键记录时间点,将新的关键记录时间点添加到关键记录时间点集合;步骤13选取新的关键记录时间点与ti之间的中间时间点作为另一个新的关键记录时间点或者选取0与新的关键记录时间点之间的中间时间点作为另一个新的关键记录时间点;步骤14重复步骤13选取多个关键记录时间点,得到关键记录时间点集合步骤2、当需要进行逆向执行时,从外部获取需要逆向执行的起始时间点,如果需要逐个指令逆向执行时,则选取指令时间粒度,进而得到选取指令时间粒度对应的时间,然后计算得到需要逆向执行的起始时间点与选取指令时间粒度对应的时间的差值t’,并记为需要逆向执行的终止时间点,在关键记录时间点集合中寻找最接近且不大于t’的关键记录时间点,转入步骤3,其中,指令时间粒度为正数;所述的逐个指令逆向执行为依次倒序执行软件源码中的指令;如果需要逐个函数逆向执行时,则选取函数时间粒度,进而得到选取函数时间粒度对应的时间,然后计算得到需要逆向执行的起始时间点与选取函数时间粒度对应的时间的差值t’,并记为需要逆向执行的终止时间点,在关键记录时间点集合中寻找最接近且不大于t’的关键记录时间点,转入步骤3,其中,函数时间粒度为正数;所述的逐个函数逆向执行为依次倒序执行软件源码中至少一段代码组成的函数;如果需要逐个软件功能逆向执行时,则选取功能时间粒度,进而得到选取功能时间粒度对应的时间,然后计算得到需要逆向执行的起始时间点与选取功能时间粒度对应的时间的差值t’,并记为需要逆向执行的终止时间点,在关键记录时间点集合中寻找最接近且不大于t’的关键记录时间点,转入步骤3,其中,功能时间粒度为正数;所述的逐个软件功能逆向执行为依次倒序执行软件源码中至少一个函数组成的软件功能;如果需要逆向执行至指定时间点,若指定时间点为关键记录时间点,将当前指定时间点记为需要逆向执行的终止时间点,然后寻找与需要逆向执行的终止时间点最接近且不大于需要逆向执行的终止时间点的关键记录时间点,转入步骤4;若指定时间点不为关键记录时间点,选取不大于指定时间点的关键记录时间点,转入步骤4;当需要进行正向执行时,从外部获取需要正向执行的起始时间点,并判断,如果正向执行的起始时间点为精准时间点,则读取存储的该精准时间点对应的指令集模拟器的处理器运行状态、寄存器状态、内存状态、外设状态,控制指令集模拟器恢复为读取到的指令集模拟器的处理器运行状态、寄存器状态、内存状态、外设状态,同时将指令集模拟器的仿真时间恢复为当前精准时间点,然后等待新的逆向执行或者正向执行;如果正向执行的起始时间点不为精准时间点,则选取不大于指定时间点的关键记录时间点,读取存储的该关键记录时间点对应的指令集模拟器的处理器运行状态、寄存器状态、内存状态、外设状态,控制指令集模拟器恢复为读取到的指令集模拟器的处理器运行状态、寄存器状态、内存状态、外设状态,同时将指令集模拟器的仿真时间恢复为该关键记录时间点,然后等待新的逆向执行或者正向执行;步骤3、读取存储的当前时刻与步骤2得到的关键记录时间点之间的所有关键记录时间点的指令集模拟器的处理器运行状态、寄存器状态、内存状态、外设状态,然后依次逆向控制指令集模拟器恢复为读取到的指令集模拟器的处理器运行状态、寄存器状态、内存状态、外设状态,同时将指令集模拟器的仿真时间依次恢复为当前时刻与步骤2得到的关键记录时间点之间的所有关键记录时间点,直至指令集模拟器恢复为步骤2得到的关键记录时间点对应的指令集模拟器的处理器运行状态、寄存器状态、内存状态、外设状态,指令集模拟器的仿真时间恢复为步骤2得到的关键记录时间点,完成逐个指令逆向执行或者逐个函数逆向执行或者逐个软件功能逆向执行,然后等待新的逆向执行或者正向执行;步骤4、读取步骤2得到的关键记录时间点对应的指令集模拟器的处理器运行状态、寄存器状态、内存状态、外设状态,控制指令集模拟器恢复为读取到的指令集模拟器的处理器运行状态、寄存器状态、内存状态、外设状态,将指令集模拟器的仿真时间恢复为关键记录时间点,实现逆向执行至指定时间点,然后等待新的逆向执行或者正向执行。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京轩宇信息技术有限公司,未经北京轩宇信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610906730.7/,转载请声明来源钻瓜专利网。