1.一种基于快速模拟器QEMU的分支指令抓取方法,其特征在于,包括:
在QEMU执行获取待翻译指令时,判断当前所获取的待翻译指令是否为分支指令;
若是,则根据目标程序架构对当前的分支指令执行翻译操作,并将所述分支指令的属性信息进行存储;其中,所述分支指令的属性信息包括所述分支指令的操作码、所述分支指令的指令地址和所述分支指令的目标地址。
2.根据权利要求1所述的方法,其特征在于,所述根据目标程序架构对当前的分支指令执行翻译操作,并将所述分支指令的属性信息进行存储,具体包括:
根据目标程序架构对当前的分支指令执行翻译操作,得到翻译分支指令;
根据所述翻译分支指令所属的基本块中其他的翻译指令、所述翻译分支指令、所述当前的分支指令的属性信息得到翻译块,并将所述翻译块存储至缓存块表中;其中,所述缓存块表中包括至少一个翻译块,每个翻译块包括一条翻译分支指令;
将所述分支指令的属性信息存储至分支指令抓取文件中。
3.根据权利要求2所述的方法,其特征在于,所述判断当前所获取的待翻译指令是否为分支指令之前,所述方法还包括:
根据当前所获取的待翻译指令的地址,判断所述缓存块表中是否存在第一翻译块,所述第一翻译块为包含所述待翻译指令对应的翻译指令的翻译块;
若所述缓存块表中不存在所述第一翻译块,则判断当前所获取的待翻译指令是否为分支指令。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若所述缓存块表中存在所述第一翻译块,则获取所述第一翻译块中的分支指令的属性信息;
将所述第一翻译块中的分支指令的属性信息存储至所述分支指令抓取文件中。
5.根据权利要求2所述的方法,其特征在于,所述将所述分支指令的属性信息存储至分支指令抓取文件中之后,所述方法还包括:
执行所述翻译块,获取下一条待翻译指令的地址;
判断所述下一条待翻译指令是否为分支指令,直至待翻译程序中的每一条待翻译指令均执行翻译操作为止。
6.根据权利要求3所述的方法,其特征在于,若所述缓存块表中不存在所述第一翻译块,则在判断当前所获取的待翻译指令是否为分支指令之前,所述方法还包括:
根据tb-fast_slow函数查询主机的物理内存,判断所述主机的物理内存中是否存在所述第一翻译块;
若所述主机的物理内存中不存在所述第一翻译块,则判断当前所获取的待翻译指令是否为分支指令。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
若所述主机的物理内存中存在所述第一翻译块,则将所述第一翻译块存储至所述缓存块表中;
获取所述第一翻译块中的分支指令的属性信息;
将所述第一翻译块中的分支指令的属性信息存储至所述分支指令抓取文件中。
8.根据权利要求4或7所述的方法,其特征在于,所述将所述第一翻译块中的分支指令的属性信息存储至所述分支指令抓取文件中之后,所述方法还包括:
执行所述第一翻译块,获取下一条待翻译指令的地址;
判断所述下一条待翻译指令是否为分支指令,直至待翻译程序中的每一条待翻译指令均执行翻译操作为止。
9.根据权利要求2所述的方法,其特征在于,所述方法还包括:
屏蔽QEMU中的tb_add_jump函数,以屏蔽所述QEMU中的直接块链机制。
10.一种基于快速模拟器QEMU的分支指令抓取装置,其特征在于,包括:判断模块和翻译存储模块,其中,
所述判断模块,用于在QEMU执行获取待翻译指令时,判断当前所获取的待翻译指令是否为分支指令;
所述翻译存储模块,用于在所述判断模块判断当前所获取的待翻译指令为分支指令时,根据目标程序架构对当前的分支指令执行翻译操作,得到翻译分支指令,并将所述分支指令的属性信息进行存储;其中,所述分支指令的属性信息包括所述分支指令的操作码、所述分支指令的指令地址和所述分支指令的跳转地址。
11.根据权利要求10所述的装置,其特征在于,所述翻译存储模块,具体用于根据目标程序架构对当前的分支指令执行翻译操作,得到翻译分支指令,并根据所述翻译分支指令所属的基本块中其他的翻译指令、所述翻译分支指令、所述当前的分支指令的属性信息得到翻译块,并将所述翻译块存储至缓存块表中,以及将所述分支指令的属性信息存储至分支指令抓取文件中;其中,所述缓存块表中包括至少一个翻译块,每个翻译块包括一条翻译分支指令,
所述判断模块,还用于在判断当前所获取的待翻译指令是否为分支指令之前,根据当前所获取的待翻译指令的地址,判断所述缓存块表中是否存在第一翻译块,若所述缓存块表中不存在所述第一翻译块,则判断当前所获取的待翻译指令是否为分支指令;其中,所述第一翻译块为包含所述待翻译指令对应的翻译指令的翻译块。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:第一获取模块和第一存储模块;
所述第一获取模块,用于在所述判断模块判断所述缓存块表中存在所述第一翻译块时,获取所述第一翻译块中的分支指令的属性信息;
所述第一存储模块,用于将所述第一翻译块中的分支指令的属性信息存储至所述分支指令文件中。