当前位置: 首页 > 专利查询>康烁专利>正文

基于二进制翻译自修改代码检测方法和装置制造方法及图纸

技术编号:21033518 阅读:36 留言:0更新日期:2019-05-04 05:10
本发明专利技术公开了一种基于二进制翻译自修改代码检测方法和装置。该方法包括在执行本地代码的过程中,检测待执行的代码所指示执行的操作是否为写操作,其中,上述本地代码包括对接收到的指令执行翻译操作得到的代码;若上述待执行的代码所指示执行的操作为上述写操作,则查询指令页表缓存中是否存在上述写操作的虚拟地址映射,其中,上述虚拟地址映射用于记录上述接收到的指令的虚拟地址和物理地址的页号的对应关系,上述指令页表缓存中存储有在执行上述翻译操作的过程中得到的上述虚拟地址映射;若查询到指令页表缓存中存在写操作的虚拟地址映射,则确定上述写操作为自修改代码操作。通过本发明专利技术,可以提高自修改代码的检测和重新翻译的效率。

Self-modifying Code Detection Method and Device Based on Binary Translation

【技术实现步骤摘要】
基于二进制翻译自修改代码检测方法和装置
本专利技术涉及计算机
,具体而言,特别涉及基于二进制翻译自修改代码检测方法和装置。
技术介绍
自修代码检测是二进制翻译研究中的一个难点,采用二进制翻译时会引起潜在的问题,因为实际执行的代码是翻译的代码而不是最初的源代码。如果最初的源代码有对自身的写操作,那么翻译版本必须产生完全相同的结果。运行时软件必须正确地仿真这种自修改代码的实例。现有方法是把最初的源代码区域被运行时软件写保护。对于所有的包含被翻译源代码的页来说,其页级写访问权限被关闭了。这可以通过有运行时软件产生的系统调用来实现。因此,任何尝试对一个包含翻译代码的页的写操作都会导致保护陷阱,并将信号传递给运行时软件。在这时,运行时软件将会清除整个cache或仅仅清除被修改的页相对应的翻译(通过使用索引表来跟踪翻译代码块源自哪个页)。然后,运行时软件临时允许向代码区域内写操作,然后进入到翻译模式,接着向前翻译,至少到它到达触发故障的代码块为止。当代码块修改其自身的时候,二进制翻译保证向前进行。那么运行时软件可以重新启用写保护,并且继续正常的操作,这最终导致重新翻译被修改页中的代码。因此本文档来自技高网...

【技术保护点】
1.一种基于二进制翻译自修改代码检测方法,其特征在于,包括:在执行本地代码的过程中,检测待执行的代码所指示执行的操作是否为写操作,其中,所述本地代码包括对接收到的指令执行翻译操作得到的代码;若所述待执行的代码所指示执行的操作为所述写操作,则查询指令页表缓存中是否存在所述写操作的虚拟地址映射,其中,所述虚拟地址映射用于记录所述接收到的指令的虚拟地址和物理地址的页号的对应关系,所述指令页表缓存中存储有在执行所述翻译操作的过程中得到的所述虚拟地址映射;若查询到所述指令页表缓存中存在所述写操作的虚拟地址映射,则确定所述写操作为自修改代码操作。

【技术特征摘要】
1.一种基于二进制翻译自修改代码检测方法,其特征在于,包括:在执行本地代码的过程中,检测待执行的代码所指示执行的操作是否为写操作,其中,所述本地代码包括对接收到的指令执行翻译操作得到的代码;若所述待执行的代码所指示执行的操作为所述写操作,则查询指令页表缓存中是否存在所述写操作的虚拟地址映射,其中,所述虚拟地址映射用于记录所述接收到的指令的虚拟地址和物理地址的页号的对应关系,所述指令页表缓存中存储有在执行所述翻译操作的过程中得到的所述虚拟地址映射;若查询到所述指令页表缓存中存在所述写操作的虚拟地址映射,则确定所述写操作为自修改代码操作。2.根据权利要求1所述的基于二进制翻译自修改代码检测方法,其特征在于,在查询指令页表缓存中是否存在所述写操作的虚拟地址映射之后,所述方法还包括:在查询到所述指令页表缓存中存在所述写操作的虚拟地址映射之后,清空所述物理地址对应的页的本地代码翻译缓存,并将所述自修改代码操作产生的自修改的指令存到内存的代码段中,其中,所述页与所述页号一一对应;执行到被自修改的指令对应地址的本地代码时,重新翻译所述自修改的指令。3.根据权利要求1所述的基于二进制翻译自修改代码检测方法,其特征在于,在查询指令页表缓存中是否存在所述写操作的虚拟地址映射之后,所述方法还包括:若未查询到所述指令页表缓存中存在所述写操作的虚拟地址映射,则确定所述写操作为写数据操作,将所述写数据操作的虚拟地址作为索引,在页表中查询所述索引对应的物理地址,并且把所述写数...

【专利技术属性】
技术研发人员:康烁
申请(专利权)人:康烁
类型:发明
国别省市:北京,11

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

1