指令模拟引擎的判别方法、装置、设备及介质制造方法及图纸

技术编号:27837404 阅读:64 留言:0更新日期:2021-03-30 12:08
本公开实施例提供了一种指令模拟引擎的判别方法、装置、设备及介质,包括:获取采用进阶精简指令集机器汇编语言编写的测试代码;在运行测试代码过程中执行用于触发普林斯顿结构的缓存特性的指令修改操作,得到对应的触发结果;其中,若触发结果为触发成功,则确定终端设备的运行环境为指令模拟引擎;若触发结果为触发失败,则确定终端设备的运行环境为非指令模拟引擎。本公开实施例中,由于不是通过执行系统API来获取信息判断指令模拟引擎的类别,因此不需要暴露系统API,降低了安全隐患。降低了安全隐患。降低了安全隐患。

【技术实现步骤摘要】
指令模拟引擎的判别方法、装置、设备及介质


[0001]本公开涉及计算机
,具体而言,本公开涉及一种英特尔架构中指令模拟引擎的判别方法、装置、设备及介质。

技术介绍

[0002]目前在移动端市场上,所面临的威胁除了常见的模拟器,还包技术日渐成熟的指令模拟引擎。指令模拟引擎是基于QEMU(Quick emulator,虚拟操作系统模拟器)衍生出来的,基于QEMU的指令模拟引擎可以模拟包含ARM(Acorn Rise Machine,进阶精简指令集机器)汇编在内目前大部分机器码,且指令模拟引擎不同于模拟器,其不需要支撑整个操作系统的开销,效率会远于高于模拟器,但是当遇到和系统底层进行交互的时候则需要由开发者自行处理,因此更适合安全研究者用于行为跟踪或者制作黑客工具。
[0003]在一般情况下,在判断是否存在指令模拟引擎时,可以通过执行与系统底层进行交互的API(Application Programming Interface,应用程序接口)来访问文件、操作系统特性、以及进程信息等信息做出判断。但是,由于指令模拟引擎模拟执行引擎可以接管所有的系统API和调用和结果,因此若采用现有的方式很容易暴露系统API,进而造成安全隐患。

技术实现思路

[0004]提供该
技术实现思路
部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该
技术实现思路
部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
[0005]第一方面,本公开实施例提供了一种指令模拟引擎的判别方法,该方法包括:
[0006]获取采用进阶精简指令集机器汇编语言编写的测试代码;
[0007]在运行测试代码过程中执行用于触发普林斯顿结构的缓存特性的指令修改操作,得到对应的触发结果;
[0008]其中,若触发结果为触发成功,则确定终端设备的运行环境为指令模拟引擎;
[0009]若触发结果为触发失败,则确定终端设备的运行环境为非指令模拟引擎。
[0010]第二方面,本公开实施例提供了一种指令模拟引擎的判别装置,该装置包括:
[0011]代码获取模块,用于获取采用进阶精简指令集机器汇编语言编写的测试代码;
[0012]代码运行模块,用于在运行测试代码过程中执行用于触发普林斯顿结构的缓存特性的指令修改操作,得到对应的触发结果;
[0013]结果判别模块,用于在触发结果为触发成功时,确定终端设备的运行环境为指令模拟引擎、以及在触发结果为触发失败,确定终端设备的运行环境为非指令模拟引擎。
[0014]第三方面,本公开提供了一种电子设备,该电子设备包括处理器和存储器;
[0015]存储器,用于存储计算机操作指令;
[0016]处理器,用于通过调用计算机操作指令,执行如本公开实施例的第一方面的任一实施例中所示的方法。
[0017]第四方面,本公开提供了一种计算机可读介质,该计算机可读介质存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如本公开实施例的第第一方面的任一实施例中所示的方法。
[0018]本公开实施例提供的技术方案带来的有益效果是:
[0019]在本公开实施例中,在确定终端设备所运行的环境是否为指令模拟引擎时,可以获取进阶精简指令集机器汇编语言编写的测试代码,并在运行测试代码过程中执行用于触发普林斯顿结构的缓存特性的指令修改操作,得到对应的触发结果,由于终端设备所运行的测试代码文本在指令模拟引擎中的缓存特性有别于非指令模拟引擎,此时运行测试代码文本时执行指令修改操作所得到的触发结果也是不同的,因此可以基于触发结果来确定终端设备所运行的环境是否为指令模拟引擎;进一步的,由于本公开实施例中在确定终端设备所运行的环境是否为指令模拟引擎时,并不是通过执行与系统底层进行交互的API来获取信息做出判断,因此不需要暴露系统API,降低了安全隐患。
附图说明
[0020]结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。
[0021]图1为本公开的实施例中一种指令模拟引擎的判别方法的流程示意图;
[0022]图2为本公开的实施例中一种指令模拟引擎的判别装置的结构示意图;
[0023]图3为本公开的实施例中一种电子设备的结构示意图。
具体实施方式
[0024]下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
[0025]应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
[0026]本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
[0027]需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元一定为不同的装置、模块或单元,也并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
[0028]需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
[0029]本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性
的目的,而并不是用于对这些消息或信息的范围进行限制。
[0030]本公开的实施例提供了一种指令模拟引擎的判别方法,如图1所示,该方法可以包括:
[0031]步骤S110,获取采用进阶精简指令集机器汇编语言编写的测试代码。
[0032]其中,该测试代码文本指的是用于确定终端设备的运行环境是否为指令模拟引擎的代码文本,而测试代码文本的具体形式本公开实施例并不限定。可以理解的是,该指令模拟引擎可以指的是英特尔架构中的指令模拟引擎,下文中以指令模拟引擎为英特尔架构中的指令模拟引擎为例进行说明。可选的,对于处于intel架构的运行环境的终端设备,如果其是在指令模拟引擎下运行,此时该模拟引擎是模拟执行ARM指令,而考虑到编码粒度可控,因此在本公开实施例中测试代码文本可以采用ARM汇编语言的方式进行编写。<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种指令模拟引擎的判别方法,其特征在于,包括:获取采用进阶精简指令集机器汇编语言编写的测试代码;在运行所述测试代码过程中执行用于触发普林斯顿结构的缓存特性的指令修改操作,得到对应的触发结果;其中,若所述触发结果为触发成功,则确定所述终端设备的运行环境为指令模拟引擎;若所述触发结果为触发失败,则确定所述终端设备的运行环境为非指令模拟引擎。2.根据权利要求1所述的方法,其特征在于,所述指令修改操作为修改所述测试代码文本中变量的操作;若所述触发结果为触发失败,则继续运行所述测试代码,直至满足预设的运行结束条件,得到用于表征所述运行环境为非指令模拟引擎的第一运行结果;若所述触发结果为触发成功,则根据所述指令修改操作对所述测试代码文本中的变量进行修改,得到修改后的测试代码文本;运行所述修改后的测试代码文本,直至满足预设的运行结束条件,得到用于表征所述运行环境为指令模拟引擎的第二运行结果。3.根据权利要求2所述的方法,其特征在于,所述测试代码文本包括循环语句,所述循环语句中包括第一循环变量,所述第一运行结果为所述第一循环变量的值,所述指令修改操作为将所述第一循环变量修改为第二循环变量的操作,所述第二运行结果为所述第二循环变量的值。4.根据权利要求3所述的方法,其特征在于,所述第一循环变量为自增加变量,所述运行结束条件为所述第一循环变量的值等于第一设定值或所述第二循环变量的值等于第二设定值。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:若确定所述终端设备的运行环境为指令模拟引擎,则对所述终端设备进行安全性鉴定,得到对应的安全性鉴定结果。6.一种指令模拟引擎的判别装置,其特征在于,包括:代码获取模块,用于获取采用进阶精简...

【专利技术属性】
技术研发人员:李智
申请(专利权)人:北京字节跳动网络技术有限公司
类型:发明
国别省市:

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

1