CN103299270B - 运行时指令重组方法及装置 - Google Patents

运行时指令重组方法及装置 Download PDF

Info

Publication number
CN103299270B
CN103299270B CN201180064951.XA CN201180064951A CN103299270B CN 103299270 B CN103299270 B CN 103299270B CN 201180064951 A CN201180064951 A CN 201180064951A CN 103299270 B CN103299270 B CN 103299270B
Authority
CN
China
Prior art keywords
instruction
address
fragment
machine
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201180064951.XA
Other languages
English (en)
Other versions
CN103299270A (zh
Inventor
汪家祥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
The safe and sound Information Technology Co., Ltd in sky in Beijing
Original Assignee
Zhongtian Aetna (beijing) Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhongtian Aetna (beijing) Information Technology Co Ltd filed Critical Zhongtian Aetna (beijing) Information Technology Co Ltd
Publication of CN103299270A publication Critical patent/CN103299270A/zh
Application granted granted Critical
Publication of CN103299270B publication Critical patent/CN103299270B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/1407Checkpointing the instruction stream
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

运行时指令重组方法,包括:缓存指令运行环境;获取待调度的机器指令片段;在所述获取的机器指令片段的最后一条指令前,插入第二跳转指令,所述第二跳转指令指向指令重组平台的入口地址,生成具有地址A"的重组指令片段;将所述缓存的指令运行环境中的地址寄存器的值A修改为地址A";恢复所述指令运行环境。运行时指令重组装置,包括:指令运行环境缓存和恢复单元,适于缓存和恢复指令运行环境;指令获取单元,适于获取待调度的机器指令片段;指令重组单元,适于生成具有地址A"的重组指令片段;和指令替换单元,适于将所述缓存的指令运行环境中的地址寄存器的值修改为重组指令片段的地址。完成了对计算设备的运行时指令的监视和控制。

Description

运行时指令重组方法及装置
技术领域
本发明涉及计算设备的指令处理,尤其涉及一种运行时指令重组方法及装置。
背景技术
计算机在运行过程中是软件指挥硬件并产生执行效果的过程。可是,计算机在运行过程中,由于编码错误、系统后门、程序漏洞、恶意代码等,造成计算机运行的结果不全是或者完全不是用户的预期结果。
为了解决这种问题,现有技术中提供了多种方法,比如静态代码分析、漏洞检测、建立恶意代码黑名单(即杀病毒软件)。但是,静态的代码检测只能检测代码的逻辑编写和参数定义的正确性,即只能进行语法分析;漏洞检测也只是在静态的基础上进行多种逻辑尝试希望从中找到逻辑漏洞,众所周知,建立黑名单的方法只能解决有限问题。
上述方法不能解决当前存在的问题的原因在于其不是针对运行时指令进行分析。
所以,现有技术仍缺乏一种对计算设备的运行时指令进行监控的方法。
发明内容
本发明解决的问题是提供一种运行时指令重组方法及装置,监视和控制计算设备的运行时指令。
为了解决上述问题,本发明的实施例中提供了一种运行时指令重组方法,包括:
缓存指令运行环境;
获取待调度的机器指令片段;在所述获取的机器指令片段的最后一条指令前,插入第二跳转指令,所述第二跳转指令指向指令重组平台的入口地址,生成具有地址A"的重组指令片段;将所述缓存的指令运行环境中的地址寄存器的值A修改为地址A";
恢复所述指令运行环境。所述指令运行环境中的地址寄存器的值为修改后的值。
可选的,获取待调度的机器指令片段包括:从CPU地址寄存器读取待调度的机器指令地址;从所述机器指令地址读取机器指令片段,所述机器指令片段最后一条指令为跳转指令。
可选的,从所述机器指令地址读取机器指令片段包括:检索所述机器指令地址对应的机器指令,直到发现第一个跳转指令;所述跳转指令包括Jump指令和Call指令。
可选的,在缓存指令运行环境之后,获取待调度的机器指令片段之前,还包括:
利用所述地址寄存器的值A查找地址对应表;所述地址对应表用于表示地址A对应的待重组的机器指令片段是否具有已保存的重组过的指令片段,所述已保存的重组过的指令片段具有地址A’;
如果找到相应的记录,将所述地址寄存器的值A修改为记录中的值A’,恢复所述指令运行环境。所述指令运行环境中的地址寄存器的值为修改后的值。
可选的,还包括:利用地址A"与地址A在所述地址对应表中建立一条记录。
可选的,在插入第二跳转指令之前,还包括:解析所述机器指令片段,利用指令集匹配所述机器指令片段,得到待处理的目标机器指令;所述指令集包括X86,MIPS和ARM指令集;按照预定的方式,修改所述目标机器指令。
可选的,所述目标指令为存储/读取指令;按照预定的方式,修改所述目标机器指令包括:修改其中的存储和读取地址为安全存储设备上的地址。
可选的,所述目标指令为I/O指令;按照预定的方式,修改所述目标机器指令包括:将所述I/O指令中的输入指令全部阻止。
可选的,所述目标指令为网络传输指令;按照预定的方式,修改所述目标机器指令包括:检验所述网络传输指令中的目标地址对应的远端计算设备是否为安全地址;如果不是,阻止所述网络传输指令。
进一步的,本发明的实施例中还提供了一种运行时指令重组方法,包括:
缓存指令运行环境;
获取待调度的机器指令片段;
反汇编所述机器指令片段,得到汇编指令片段;
在所述汇编指令片段的最后一条指令前,插入第二跳转指令,生成具有地址A"的重组指令片段;所述第二跳转指令指向指令重组平台的入口地址;将所述缓存的指令运行环境中的地址寄存器的值修改为重组指令片段的地址;
汇编所述汇编指令片段,得到重组后的机器指令片段;
恢复所述指令运行环境。所述指令运行环境中的地址寄存器的值为修改后的值。
进一步的,本发明的实施例中还提供了一种计算机可读介质,所述可读介质中存储有计算机可执行的程序代码,所述程序代码用于执行上述方法的步骤。
进一步的,本发明的实施例中还提供了一种运行时指令重组装置,包括:指令运行环境缓存和恢复单元,适于缓存和恢复指令运行环境;指令获取单元,适于在指令运行环境缓存和恢复单元缓存指令运行环境后,获取待调度的机器指令片段;指令重组单元,适于解析、修改所述待调度的机器指令片段,以生成具有地址A"的重组指令片段;和指令替换单元,适于将所述缓存的指令运行环境中的地址寄存器的值修改为重组指令片段的地址。
可选的,所述指令获取单元适于从CPU地址寄存器读取待调度的机器指令地址,并从所述机器指令地址读取机器指令片段,所述机器指令片段最后一条指令为跳转指令。
可选的,所述运行时指令重组装置还包括:指令检索单元,适于利用所述缓存的指令运行环境中的地址寄存器的值A查找地址对应表;所述地址对应表用于表示地址A对应的待重组的机器指令片段是否具有已保存的重组过的指令片段,所述已保存的重组过的指令片段具有地址A’;如果找到相应的记录,指令检索单元适于调用指令替换单元,将所述地址寄存器的值A修改为记录中的值A’;如果没有找到相应的记录,指令检索单元适于利用地址A"与地址A在所述地址对应表中建立一条记录。
可选的,所述指令重组单元包括:指令解析单元,适于利用指令集匹配所述机器指令片段,得到待处理的目标机器指令;所述指令集包括X86,MIPS和ARM指令集;指令修改单元,适于按照预定的方式,修改所述目标机器指令。
可选的,如果所述目标指令为存储/读取指令,所述指令修改单元适于修改其中的存储和读取地址为安全存储设备上的地址。
可选的,如果所述目标指令为I/O指令,所述指令修改单元适于将所述I/O指令中的输入指令全部阻止。
可选的,如果所述目标指令为网络传输指令,所述指令修改单元适于检验所述网络传输指令中的目标地址对应的远端计算设备是否为安全地址;如果不是,所述指令修改单元适于阻止所述网络传输指令。
可选的,所述指令重组单元包括:反汇编单元,适于在解析、修改所述待调度的机器指令片段之前,反汇编所述待调度的机器指令片段,生成待调度的汇编指令片段;汇编单元,适于在解析、修改所述待调度的机器指令片段之后,汇编重组后的汇编指令片段,得到机器码表示的重组指令片段。
与现有技术相比,本发明具有以下优点:
(1)通过指令重组方法,在指令运行状态下监控计算设备的指令;
(2)利用地址对应表,提高了指令重组效率,节省了计算资源;
(3)针对存储和读取指令进行操作,修改其中的目标和源地址,以实现转移存储;并且通过转移存储到安全存储设备上,实现数据安全;
(4)针对I/O指令进行操作,将所述I/O指令中的输入指令全部阻止,以实现彻底阻断对本地硬件设备的写操作;还可以实现对除存储指令之外的输入指令的阻止,可以提高计算设备中的数据安全性;
(5)针对网络传输指令进行操作,检验所述网络传输指令中的目标地址对应的远端计算设备是否为安全地址;如果不是,阻止所述网络传输指令,以实现数据安全传输。
附图说明
图1是本发明的第一个实施例中提供的运行时指令重组方法的流程图;
图2是本发明的第一个实施例中指令重组过程和重组指令片段的示意图;
图3是本发明的第二个实施例中提供的运行时指令重组方法的流程图;
图4是本发明的第三个实施例中提供的重组指令的生成方法流程图;
图5是本发明的第七个实施例中提供的运行时指令重组装置的框图;
图6是本发明的第八个实施例中提供的运行时指令重组装置的框图;
图7是本发明的第九个实施例中提供的运行时指令重组装置的指令重组单元的框图;
图8是本发明的第十个实施例中提供的计算机终端系统的层次结构框图;
图9是本发明的第十个实施例中提供的数据转储过程整体流程图;
图10是图9中初始化过程S1000的流程图;
图11是本发明的第十个实施例中提供的Bitmap示意图;
图12是本发明的第十个实施例中提供的数据安全存储方法的流程图;
图13是本发明的第十个实施例中提供的数据安全读取方法的流程图;
图14是本发明的第十一个实施例中提供的数据安全传输方法的流程图;
图15是本发明的第十一个实施例中提供的网络结构示意图;
图16是本发明第十二个实施例中提供的数据安全存储装置的结构框图;
图17是本发明第十三个实施例中提供的数据安全读取装置的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。
在以下描述中阐述了具体细节以便于充分理解本发明。但是本发明能够以多种不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广。因此本发明不受下面公开的具体实施方式的限制。
计算机运行过程中,CPU地址寄存器保存下一条将要运行的机器指令的地址;为了实现运行时机器指令监控,本发明一些实施例中将获取该寄存器中的数据,并按照该数据指向的地址,读取下一条、多条将要运行的机器指令;并且,修改所述一条、多条机器指令所组成的待调度的指令片段,从而在每一条机器指令运行前获得控制权,不断的进行后续指令的分析。进一步的,本发明的一些实施例中,在获取到待调度的机器指令片段后,还包括对其中的目标指令进行处理的步骤,从而不仅对运行时指令进行了重组以监控运行时指令,还完成对所述目标指令的修改和更新。
本发明的第一个实施例中提供了一种运行时指令重组方法。如图1所示,该方法包括:
S101,缓存指令运行环境;
S102,获取待调度的机器指令片段;在所述获取的机器指令片段的最后一条指令前,插入第二跳转指令,所述第二跳转指令指向指令重组平台的入口地址,生成具有地址A"的重组指令片段;将所述缓存的指令运行环境中的地址寄存器的值A修改为地址A";
S103,恢复所述指令运行环境。
具体的,在步骤S101执行之前,本方法获取CPU执行权或控制权。CPU执行本方法的步骤时,首先缓存指令运行环境(即步骤S101),即缓存刚刚执行的被监控指令的结果。所述CPU在本实施例中为X86架构中央处理器;在本发明的其他实施例中,也可以是MIPS处理器或基于ARM架构的处理器,而且本领域普通技术人员可以了解,所述CPU也可以是任何其他类型的计算设备中的指令处理单元。
在步骤S101中,所述缓存指令运行环境包括:向缓存栈中压入指令运行相关的寄存器数据,其中包括CPU地址寄存器等寄存器的值。在本发明的其他实施例中,缓存或保存指令运行环境也可以在指定的、默认的其他缓存数据结构中进行。
在步骤S102中,获取待调度的机器指令片段包括:
S1021,从CPU地址寄存器读取待调度的机器指令地址;
S1022,以跳转指令为检索目标,检索所述机器指令地址对应的机器指令,直到发现第一个跳转指令;所述跳转指令包括Jump指令和Call指令;
S1023,将所述第一个跳转指令及其之前的所有机器指令作为一个待调度的机器指令片段;将该机器指令片段保存在指令重组平台中,或其他指令重组平台能够读取的存储位置。
在本发明的其他实施例中,获取待调度的机器指令片段也可以以非跳转指令,例如写入指令、读取指令等,为检索目标,切分机器指令片段;这时,需要保证其中的跳转指令执行后,指令重组平台仍能够获取CPU控制权,所以跳转指令需要作为补充检索目标或者第二检索目标,即得到粒度更小的机器指令片段。
仍然在步骤S102中,在插入第二跳转指令JP2之前,本实施例提供的方法还可以包括:
S1025,解析所述机器指令片段,利用指令集匹配所述机器指令片段,得到待处理的目标机器指令;所述指令集包括X86,MIPS和ARM指令集;
S1026,按照预定的方式,修改所述目标机器指令。
利用上述步骤,不仅可以完成运行时指令监控,还可以进行其他处理过程,将在下面的实施例中进一步展开描述。
由于本实施例只是为了可以实现运行时指令的重组,所以步骤S1025、S1026没有在本实施例中执行,直接执行步骤:在所述机器指令片段的最后一条指令(即跳转指令JP1)前,插入第二跳转指令JP2,所述JP2指向指令重组平台的入口地址,生成具有地址A"的重组指令片段;将所述缓存的指令运行环境中的地址寄存器(即CPU地址寄存器)的值A修改为地址A"。其中的指令重组平台就是本实施例中提供的指令重组方法的执行平台。
插入JP2是为了在CPU运行所述待调度的机器指令片段时,在JP1运行前,重新开始运行所述指令重组平台,指令重组平台将继续分析下一段待调度的机器指令片段,重复本方法中的步骤进而完成对所有运行指令的重组。更具体的描述见下面对步骤S103的分析。
在步骤S103中,恢复所述指令运行环境包括:从缓存栈中弹出指令运行相关的寄存器数据;其中地址寄存器保存的跳转指令的目标地址已经修改为以A"为入口地址的新的机器指令片段。恢复所述指令运行环境后,指令重组平台完成运行,CPU继续执行上一个机器指令片段的最后一条指令即跳转指令,其目标地址如上所述成为A",CPU将执行A"为入口地址的新的机器指令片段。所述以A"为入口地址的指令片段执行到倒数第二跳指令(即第二跳转指令JP2)后,所述指令重组平台重新得到CPU控制权;所述指令重组平台重新开始执行步骤S101~步骤S103。
为了进一步说明指令重组过程和重组指令片段的生成,请参考图2;其中包括:待调度的机器指令集合401,其中的第一个跳转指令为4012,也称为第一跳转指令4012;假设第一跳转指令4012指向机器指令4013,在指令4012之前的指令运行结束之前,如果指令4012的目标地址为变量,则其指向地址是不可知的,所以这里假设第一跳转指令4012指向机器指令4013;从第一跳转指令4012以前的包括第一跳转指令4012的所有机器指令构成了机器指令片段4011。
继续参考图2,当指令重组平台411运行后,首先缓存指令运行环境;然后获取机器指令片段4011;指令重组平台在第一跳转指令4012前插入了第二跳转指令4113,第二跳转指令4113指向指令重组平台411本身,从而生成了重组指令片段4111,重组指令片段的地址为A";将所述缓存的指令运行环境中的地址寄存器的值A修改为地址A";最后恢复所述指令运行环境。
指令重组平台411结束运行后,CPU继续执行上一个重组指令片段的最后一条跳转指令,其中的地址寄存器的值已经改为A"。以A"为地址的重组指令片段运行后,当执行到第二跳转指令4113时,指令重组平台411会重新获得CPU控制权,并继续分析后续的待调度的机器指令,从而完成了运行时指令重组的方法。
进一步的,由于程序运行过程中所生成的机器指令具有很高的重复性,为了提高指令重组效率,节省计算设备的计算资源(CPU资源),如图3所示,本发明第二实施例中提供了一种运行时指令重组方法。具体过程包括:
S201,缓存指令运行环境;
S202,利用所述缓存的指令运行环境中的地址寄存器的值A查找地址对应表;所述地址对应表用于表示地址A对应的待重组的机器指令片段是否具有已保存的重组过的指令片段,所述已保存的重组过的指令片段具有地址A’;
S203,如果找到相应的记录,将所述地址寄存器的值A修改为记录中的值A’,恢复所述指令运行环境;
S204,如果没有找到相应的记录,获取待调度的机器指令片段;在所述获取的机器指令片段的最后一条指令前,插入第二跳转指令,所述第二跳转指令指向指令重组平台的入口地址,生成具有地址A"的重组指令片段;将所述缓存的指令运行环境中的地址寄存器的值A修改为地址A";
S205,恢复所述指令运行环境。
进一步的,步骤S204还包括:所述利用地址A"与地址A在所述地址对应表中建立一条记录。具有地址A"重组指令片段被保存在重组指令平台中,以供重用。
本方法利用地址对应表,极大的节省了计算资源,提高了运行时指令重组的效率。
上述实施例中直接操作机器指令,即二进制机器码,在本发明的其他实施例中,由于还有进一步的指令处理、指令修改的操作,所述的待调度的机器指令片段可以经过反汇编生成汇编代码片段,以供后续操作使用,然后在恢复所述指令运行环境之前汇编所述的汇编代码片段,再得到二进制机器码。
本发明第三实施例中提供了一种运行时指令重组方法。具体过程包括:
S301,缓存当前指令运行环境;
S302,利用所述缓存的指令运行环境中的地址寄存器的值A查找地址对应表;
S303,如果找到相应的记录,将所述地址寄存器的值A修改为记录中的值A’,恢复所述指令运行环境;
S304,如果没有找到相应的记录,如图4所示,重组指令的生成方法包括:
S3041,获取待调度的机器指令片段;
S3042,反汇编所述机器指令片段,得到汇编指令片段;
S3043,解析所述汇编指令片段,利用指令集匹配所述汇编指令片段,得到待处理的目标汇编指令;
S3044,在所述汇编指令片段的最后一条指令前,插入第二跳转指令JP2,所述JP2指向指令重组平台的入口地址,生成具有地址A"的重组指令片段;
S3045,汇编修改过的汇编指令片段,得到重组后的机器指令片段;
S3046,利用地址A"与地址A在所述地址对应表中建立一条记录;
S3047,将所述缓存的指令运行环境中的地址寄存器的值A修改为地址A";
S305,恢复所述指令运行环境。
步骤S3042与S3045为相对应的反汇编与汇编步骤。利用反汇编技术将机器指令片段转换成为汇编指令片段之后,易于做其他匹配、分析及修改的后续步骤。其余步骤的具体内容与上述实施例中的内容相同或基本相同,这里不再赘述。
上述的运行时指令重组方法为进一步的应用提供了基础。下面的实施例中提供了各种针对不同机器指令进行处理的运行时指令重组方法,其中包括存储/读取指令,I/O指令,以及网络传输指令。
针对存储/读取指令,本发明第四实施例中提供了一种运行时指令重组方法。具体过程包括:
S401,缓存当前指令运行环境;
S402,利用所述缓存的指令运行环境中的地址寄存器的值A查找地址对应表;
S403,如果找到相应的记录,将所述地址寄存器的值A修改为记录中的值A’,恢复所述指令运行环境;
S404,如果没有找到相应的记录,重组指令的生成方法包括:
S4041,获取待调度的机器指令片段;
S4042,反汇编所述机器指令片段,得到汇编指令片段;
S4043,解析所述汇编指令片段,利用指令集匹配所述汇编指令片段,得到待处理的目标汇编指令;所述目标指令为存储/读取指令;
S4044,如果所述汇编指令包括存储/读取指令,修改其中的存储和读取地址为安全存储设备上的地址;
S4045,在所述汇编指令片段的最后一条指令前,插入第二跳转指令JP2,所述JP2指向指令重组平台的入口地址,生成具有地址A"的重组指令片段;
S4046,汇编修改过的汇编指令片段,得到重组后的机器指令片段;
S4047,利用地址A"与地址A在所述地址对应表中建立一条记录;
S4048,将所述缓存的指令运行环境中的地址寄存器的值A修改为地址A";
S405,恢复所述指令运行环境。
本实施例是在反汇编步骤之后进行指令处理的;在其他实施例中,也可以省略反汇编和对应的汇编步骤,直接处理机器指令。
在步骤S4044中,针对存储和读取指令进行操作,修改其中的目标和源地址,以实现转移存储;并且通过转移存储到安全存储设备上,实现数据安全。更具体的安全存储/读取的方法将在本发明提供的下面的实施例中介绍。
针对I/O指令,本发明第五实施例中提供了一种运行时指令重组方法。具体过程包括:
S501,缓存当前指令运行环境;
S502,利用所述缓存的指令运行环境中的地址寄存器的值A查找地址对应表;
S503,如果找到相应的记录,将所述地址寄存器的值A修改为记录中的值A’,恢复所述指令运行环境;
S504,如果没有找到相应的记录,重组指令的生成方法包括:
S5041,获取待调度的机器指令片段;
S5042,反汇编所述机器指令片段,得到汇编指令片段;
S5043,解析所述汇编指令片段,利用指令集匹配所述汇编指令片段,得到待处理的目标汇编指令;目标指令为I/O指令;
S5044,如果所述汇编指令包括I/O指令,将所述I/O指令中的输入指令全部阻止;
S5045,在所述汇编指令片段的最后一条指令前,插入第二跳转指令JP2,所述JP2指向指令重组平台的入口地址,生成具有地址A"的重组指令片段;
S5046,汇编修改过的汇编指令片段,得到重组后的机器指令片段;
S5047,利用地址A"与地址A在所述地址对应表中建立一条记录;
S5048,将所述缓存的指令运行环境中的地址寄存器的值A修改为地址A";
S505,恢复所述指令运行环境。
本实施例是在反汇编步骤之后进行指令处理的;在其他实施例中,也可以省略反汇编和对应的汇编步骤,直接处理机器指令。
在步骤S5044中,针对I/O指令进行操作,将所述I/O指令中的输入指令全部阻止,以实现彻底阻断对本地硬件设备的写操作;结合上一个实施例中的存储指令处理过程,还可以实现对除存储指令之外的输入指令的阻止,可以提高计算设备中的数据安全性。
针对网络传输指令,本发明第六实施例中提供了一种运行时指令重组方法。具体过程包括:
S601,缓存当前指令运行环境;
S602,利用所述缓存的指令运行环境中的地址寄存器的值A查找地址对应表;
S603,如果找到相应的记录,将所述地址寄存器的值A修改为记录中的值A’,恢复所述指令运行环境;
S604,如果没有找到相应的记录,重组指令的生成方法包括:
S6041,获取待调度的机器指令片段;
S6042,反汇编所述机器指令片段,得到汇编指令片段;
S6043,解析所述汇编指令片段,利用指令集匹配所述汇编指令片段,得到待处理的目标汇编指令;目标指令为网络传输指令;
S6044,如果所述汇编指令包括网络传输指令,检验所述网络传输指令中的目标地址对应的远端计算设备是否为安全地址;如果不是,阻止所述网络传输指令;
S6045,在所述汇编指令片段的最后一条指令前,插入第二跳转指令JP2,所述JP2指向指令重组平台的入口地址,生成具有地址A"的重组指令片段;
S6046,汇编修改过的汇编指令片段,得到重组后的机器指令片段;
S6047,利用地址A"与地址A在所述地址对应表中建立一条记录;
S6048,将所述缓存的指令运行环境中的地址寄存器的值A修改为地址A";
S605,恢复所述指令运行环境。
本实施例是在反汇编步骤之后进行指令处理的;在其他实施例中,也可以省略反汇编和对应的汇编步骤,直接处理机器指令。
在步骤S6044中,针对网络传输指令进行操作,检验所述网络传输指令中的目标地址对应的远端计算设备是否为安全地址;如果不是,阻止所述网络传输指令,以实现数据安全传输。
上述多个实施例中的地址对应表是由指令重组平台建立并维护的,可以是固定长度的数组结构,也可以是可变长度的链表结构,还可以是其他存储二位数据的适当的数据结构。优选的,其长度可调节,并且其占用空间可释放。释放地址对应表的操作可以随机进行,也可以周期进行。在一些实施例中,所述的地址对应表还可以包括记录建立时间字段,用于在释放空间删除记录时,按照建立时间的长短删除记录。在一些实施例中,所述的地址对应表还可以包括记录使用次数字段,在查找地址对应表步骤中,如果找到,将改变该字段的值;所述记录使用次数字段也用于在释放空间删除记录时,按照使用次数的多少删除记录。
进一步的,为了从系统启动后即执行运行时的指令监控,实现计算设备运行阶段的运行时指令全监控,本发明另一个实施例中,修改计算机启动时的load指令,在load指令执行前调用本发明提供的指令重组平台,执行上述运行时指令重组方法,由于load指令跳转地址为已知的固定地址,指令重组平台可以事先建立好地址对应表及该第一条记录,并建立好第一个重组指令片段。
进一步的,本发明还提供一种计算机可读介质,其中,所述可读介质中存储有计算机可执行的程序代码,所述程序代码用于执行上述实施例中提供的运行时指令重组方法的步骤。
另一个方面,与上述运行时指令重组方法相对应,本发明的第七个实施例中提供了一种运行时指令重组装置。
如图5所示,指令重组装置500包括:
指令运行环境缓存和恢复单元501,适于缓存和恢复指令运行环境;
指令获取单元502,适于在指令运行环境缓存和恢复单元缓存指令运行环境后,获取待调度的机器指令片段;
指令重组单元503,适于解析、修改所述待调度的机器指令片段,以生成具有地址A"的重组指令片段;和
指令替换单元504,适于将所述缓存的指令运行环境中的地址寄存器的值修改为重组指令片段的地址。
所述指令运行环境缓存和恢复单元501分别与指令获取单元502以及指令替换单元504耦接,所述指令获取单元502,指令重组单元503和指令替换单元504依次耦接。
指令重组装置500的执行运行时指令重组时:
首先,指令运行环境缓存和恢复单元501缓存指令运行环境,即向缓存栈中压入指令运行相关的寄存器数据;
然后,所述指令获取单元502从CPU地址寄存器读取待调度的机器指令地址,并从所述机器指令地址读取机器指令片段,所述机器指令片段最后一条指令为跳转指令。具体的,指令获取单元502从CPU地址寄存器511读取待调度的机器指令地址;以跳转指令为检索目标,检索所述机器指令地址对应的机器指令,直到发现第一个跳转指令;所述跳转指令包括Jump指令和Call指令;将所述第一个跳转指令及其之前的所有机器指令作为一个待调度的机器指令片段;将该机器指令片段保存在指令重组装置500中,或其他指令重组装置500能够读取的存储位置;
然后,指令重组单元503在所述获取的机器指令片段的最后一条指令前,插入第二跳转指令,所述第二跳转指令指向指令重组装置的入口地址,生成具有地址A"的重组指令片段;
然后,指令替换单元504将所述缓存的指令运行环境中的地址寄存器的值A修改为地址A";
最后,指令运行环境缓存和恢复单元501恢复所述指令运行环境,即从缓存栈中弹出指令运行相关的寄存器数据。
进一步的,在本发明的第八个实施例中提供了一种运行时指令重组装置,充分利用运行时指令重复性,提高重组效率,节省计算装置的计算资源。
如图6所示,指令重组装置600包括:
指令运行环境缓存和恢复单元601,适于缓存和恢复指令运行环境;
指令获取单元602,适于在指令运行环境缓存和恢复单元缓存指令运行环境后,获取待调度的机器指令片段;
指令重组单元603,适于解析、修改所述待调度的机器指令片段,以生成具有地址A"的重组指令片段;
指令替换单元604,适于将所述缓存的指令运行环境中的地址寄存器的值修改为重组指令片段的地址;和
指令检索单元605,适于利用所述缓存的指令运行环境中的地址寄存器的值A查找地址对应表;所述地址对应表用于表示地址A对应的待重组的机器指令片段是否具有已保存的重组过的指令片段,所述已保存的重组过的指令片段具有地址A’;如果找到相应的记录,指令检索单元适于调用指令替换单元,将所述地址寄存器的值A修改为记录中的值A’;如果没有找到相应的记录,指令检索单元适于利用地址A"与地址A在所述地址对应表中建立一条记录。
所述指令运行环境缓存和恢复单元601分别与指令检索单元605以及指令替换单元604耦接,所述指令检索单元605分别与指令获取单元602,指令重组单元603和指令替换单元604耦接,所述指令获取单元602,指令重组单元603和指令替换单元604依次耦接。
指令重组装置600的执行运行时指令重组时:
首先,指令运行环境缓存和恢复单元601缓存指令运行环境,即向缓存栈中压入指令运行相关的寄存器数据;
然后,指令检索单元605利用所述缓存的指令运行环境中的地址寄存器的值A查找地址对应表;
如果找到相应的记录,指令检索单元605调用指令替换单元604,指令替换单元604将所述地址寄存器的值A修改为记录中的值A’;指令替换单元604调用指令运行环境缓存和恢复单元602,以恢复所述指令运行环境,即从缓存栈中弹出指令运行相关的寄存器数据,重组结束;
如果没有找到相应的记录,所述指令获取单元602从CPU地址寄存器读取待调度的机器指令地址,并从所述机器指令地址读取机器指令片段,所述机器指令片段最后一条指令为跳转指令。具体的,指令获取单元602从CPU地址寄存器611读取待调度的机器指令地址;以跳转指令为检索目标,检索所述机器指令地址对应的机器指令,直到发现第一个跳转指令;所述跳转指令包括Jump指令和Call指令;将所述第一个跳转指令及其之前的所有机器指令作为一个待调度的机器指令片段;将该机器指令片段保存在指令重组装置600中,或其他指令重组装置600能够读取的存储位置;
然后,指令重组单元603在所述获取的机器指令片段的最后一条指令前,插入第二跳转指令,所述第二跳转指令指向指令重组装置的入口地址,生成具有地址A"的重组指令片段;
然后,指令重组单元603将地址A"发送给指令检索单元605,指令检索单元605利用地址A"与地址A在其中的地址对应表中建立一条记录;以备后续指令重用;
然后,指令替换单元604将所述缓存的指令运行环境中的地址寄存器的值A修改为地址A";
最后,指令运行环境缓存和恢复单元501恢复所述指令运行环境,即从缓存栈中弹出指令运行相关的寄存器数据。
本实施例中,指令重组单元603还包括:
指令解析单元6031,适于利用指令集匹配所述机器指令片段,得到待处理的目标机器指令;所述指令集包括X86,MIPS和ARM指令集;
指令修改单元6032,适于按照预定的方式,修改所述目标机器指令。
如果所述目标指令为存储/读取指令,所述指令解析单元6031将负责获取待调度的机器指令片段中的存储/读取指令,所述指令修改单元6032修改其中的存储和读取地址为安全存储设备上的地址。其作用和效果与上述对应的方法实施例相同,这里不再赘述。
如果所述目标指令为I/O指令,所述指令解析单元6031将负责获取待调度的机器指令片段中的I/O指令,所述指令修改单元6032将所述I/O指令中的输入指令全部阻止。其作用和效果与上述对应的方法实施例相同,这里不再赘述。
如果所述目标指令为网络传输指令,所述指令解析单元6031将负责获取待调度的机器指令片段中的网络传输指令,所述指令修改单元6032检验所述网络传输指令中的目标地址对应的远端计算设备是否为安全地址;如果不是,所述指令修改单元适于阻止所述网络传输指令。其作用和效果与上述对应的方法实施例相同,这里不再赘述。
在本发明的第九个实施例中,如图7所示,指令重组单元703还可以包括反汇编单元7031和汇编单元7034。反汇编单元7031,指令解析单元7032,指令修改单元7033和汇编单元7034依次耦接。本实施的其他单元与上述的第八实施例相同,这里不再赘述。
其中,反汇编单元7031适于在解析、修改所述待调度的机器指令片段之前,反汇编所述待调度的机器指令片段,生成待调度的汇编指令片段;发送给指令解析单元7032。
汇编单元7034适于在解析、修改所述待调度的机器指令片段之后,汇编重组后的汇编指令片段,得到机器码表示的重组指令片段;发送给指令替换单元。
在该实施例中,所述指令解析单元7032和指令修改单元7033将操作待调度的汇编指令片段,其过程与上述对应的方法实施例相同。
上面详细的介绍了本发明的实施例中提供的运行时指令重组方法和装置,与现有技术相比,具有以下优点:
(1)通过指令重组方法,在指令运行状态下监控计算设备的指令;
(2)利用地址对应表,提高了指令重组效率,节省了计算资源;
(3)针对存储和读取指令进行操作,修改其中的目标和源地址,以实现转移存储;并且通过转移存储到安全存储设备上,实现数据安全;
(4)针对I/O指令进行操作,将所述I/O指令中的输入指令全部阻止,以实现彻底阻断对本地硬件设备的写操作;还可以实现对除存储指令之外的输入指令的阻止,可以提高计算设备中的数据安全性;
(5)针对网络传输指令进行操作,检验所述网络传输指令中的目标地址对应的远端计算设备是否为安全地址;如果不是,阻止所述网络传输指令,以实现数据安全传输。
针对目标指令为存储/读取指令的情况,上面给出了一个对存储和读取机器指令的处理的实施例,下面将给出更多的实施例;并在这些实施例中,提供了数据安全存储和读取方法,以及数据安全存储和读取装置。
当计算设备,例如计算机、智能手机,被恶意代码侵入后,恶意代码可以从计算机系统中取得数据,恶意代码在窃取数据后。恶意代码的行为模式为:(1)存储行为:将目标数据内容保存到某个存储位置;(2)传输行为:将窃取的数据直接通过网络传输到指定的目标地址。另外,使用上述计算设备或信息设备的人员进行内部泄密的行为模式包括:(1)主动泄密:涉密人员通过主动拷贝、通过恶意工具穿透安全系统、置入木马等手段直接取得涉密数据,并进行泄密;(2)被动泄密:涉密人员使用的电脑或存储介质因保管不善丢失或使用不当,例如将涉密装备直接接入Internet造成的泄密。
为了解决上述问题,下面结合附图对本发明的具体实施方式做详细的说明。图8是本发明第十个实施例中计算机终端系统层次结构示意图。其中,计算机终端系统200包括用户界面层201,应用层202,操作系统内核层203,硬件映射层204,安全层205,硬件层206;计算机终端系统200与存储设备100(安全存储设备)耦接。硬件层206包括CPU2061,硬盘2062(即本地存储设备)以及网卡2063。本实施例中,存储设备100为远程磁盘阵列,通过网络连接硬件层206的网卡2063,与计算机终端系统200交换数据;在本发明的其他实施例中,存储设备100也可以是其他已知或未知类型的存储设备。
结合上述层次结构,参考图9,本实施例提供的数据转储过程为:
S1000,初始化;
S2000,数据写入;
S3000,数据读取。
在其他实施例中,上述的数据写入、读取过程以及初始化过程不需全部执行,执行所需的过程或步骤即可。
进一步的,参考图10,上述的初始化过程S1000包括:
S1010,建立计算机终端系统200与存储设备100的通讯;
S1020,从存储设备100上同步映射位图(Bitmap)至当前计算机终端系统200,保存在计算机终端系统200的内存中;所述映射位图用于表示本地存储地址的数据是否转储到所述安全存储设备。
为了区分计算机终端200上的Bitmap与存储设备100上的两份转储表,下文中,除非另有说明,将计算机终端系统200上的Bitmap称为映射位图或第一映射位图,将存储设备100上的Bitmap称为第二映射位图。
如果从存储设备100上同步第二映射位图至当前计算机终端系统200的操作失败,说明存储设备100与计算机终端系统200之间是第一次连接,或者上次连接时计算机终端系统200没有进行存储操作。初始化过程S1000还包括:
S1030,在存储设备100与计算机终端系统200上建立Bitmap。
具体的,首先将计算机终端系统中的本地存储空间映射到存储设备100上,具体的映射关系为:以1扇区(或其他存储的基本单位)为单位的一一映射,同时建立映射位图(Bitmap)。在本发明的其他实施例中,也可以使用其他基本容量为单位建立本地存储空间到存储设备100上的Bitmap。
图11为本实施例中Bitmap示意图;图中包括本地存储设备(即硬盘2062)上的存储介质3000,与本地存储设备网络连接的存储设备100上的存储介质4000。对存储介质3000,在存储介质4000上建立与其大小相同的存储空间4010,作为一一映射空间。这时存储空间4010中只保存一张Bitmap 4020。Bitmap 4020为一张位图,其中1位代表1扇区,每一位的数据(0或1)标识存储介质3000上对应的扇区是否转储在存储介质4000上的存储空间4010中。本实施例Bitmap 4020中,转储的扇区标记为1,非转储的扇区标记为0。Bitmap 4020建立完成之后同步到计算机终端系统200中。当应用程序或操作系统保存一个数据,例如文件时,操作系统内部的文件系统将在本地存储设备的存储介质3000上开辟一定量的存储空间,例如扇区3040和扇区3050,并分配给该文件使用,并改写本地的文件分配表。该文件转储时,Bitmap 4020中记载相应的扇区3040和扇区3050对应的位数据将改写为1。在存储介质4000上相同的位置,分配扇区4040和4050用于保存转储数据。
本实施例的初始化过程结束之后,所述计算机终端系统200和存储设备100上将分别保存内容一致的Bitmap数据。
进一步的,上述的数据写入过程S2000包括:
S2010,应用层202通过操作系统内核层203的文件系统发出写文件操作请求或操作系统内核层203直接发出写文件操作请求;或应用层202直接向硬件映射层204发出写数据操作请求;或操作系统内核层203直接向硬件映射层204发出写数据操作请求;
S2020,操作系统内核层203将写文件请求解析成硬件端口指令(即硬件指令),下发至硬件映射层204,其中端口指令包含需要写存储设备的位置(即扇区);如果是直接向硬件映射层204发出写数据操作请求,则该请求已经为硬件端口指令;
S2030,安全层205将端口指令中的写入位置(即扇区)改写为在存储设备100上的存储地址,更新第一映射位图,将所述扇区对应的位数据修改为1,表示该扇区已经转储;安全层205将修改后的端口指令发送给硬件层206。
完成上述操作后,写入过程S2000还可以包括:
S2040,将第一映射位图同步到存储设备100上,保存为第二映射位图,以确保计算机终端系统200上的第一映射位图与存储设备上的第二映射位图一致。在本发明的其他实施例中,该同步操作也可以在最后进行,即本地的计算机终端系统200关机前进行。
写入过程执行完成之后,计算机终端系统200并没有存储写入的数据,相应的数据已经转存在存储设备100上。
进一步的,上述的数据读取过程S3000包括:
S3010,将存储设备100上的第二映射位图同步到计算机终端系统200上,保存为第一映射位图;
S3020,应用层202通过操作系统内核层203的文件系统发出读文件操作请求,或操作系统内核层203直接发出读文件操作请求;或应用层202直接向硬件映射层204发出读数据操作请求;或操作系统内核层203直接向硬件映射层204发出读数据操作请求;
S3030,安全层205接收来自硬件映射层204的数据读取指令,获取其中的读取地址(源地址),如果该地址不是存储设备100上的地址,查找第一映射位图,如果第一映射位图中的位数据表示所述读取地址为转储地址,安全层205修改端口指令的读取地址为存储设备100上的读取地址;安全层205将修改后的端口指令发送给硬件层206。
在步骤S3010中,从存储设备100同步第二映射位图到本地的过程是为了在计算机终端系统200重新启动了以后,保持本地数据与安全存储设备上的数据的一致性。
上述读取过程没有影响用户既有的操作模式,并且实现了对于安全存储设备,即存储设备100上已经转储的数据的读取。
进一步的,基于上述数据写入过程,参考图12,本实施例提供的数据安全存储方法包括如下步骤:
S4010,接收硬件指令;
S4020,分析所述硬件指令;
S4030,判断该硬件指令是否为存储指令;
S4040,如果该硬件指令是存储指令,修改存储指令中的目标地址为对应的存储设备100(即安全存储设备)上的存储地址;
S4050,将修改后的存储指令发送到硬件层。
具体的,本实施例中,计算机终端系统运行的是Windows操作系统,Windows系统中的硬件抽象层HAL为硬件映射层。在其他实施例中,计算机终端也可以运行其他操作系统,例如Linux,Unix或嵌入式操作系统等,硬件映射层为Linux或Unix或嵌入式操作系统对应的硬件映射层。
在步骤S4010中,所述硬件指令是来自硬件映射层的硬件指令。接收来自硬件映射层的硬件指令可以100%的筛查所有发送到CPU等处理器的硬件指令(接口指令),进一步提高数据安全性。在本发明的其他实施中,所述硬件指令也可以来自操作系统内核层或其他计算机层次对应的单元。
另外,结合上述运行时指令重组的方法,接收硬件指令的过程可以包括:采用运行时指令重组的方法获取硬件指令。
这步骤S4020中,安全层205中内置了多种指令分析机制,包括对X86指令、ARM指令、MIPS指令等指令集的分析机制,以处理不同类型的CPU指令。
在步骤S4040中,修改存储指令中的目标地址为对应的存储设备100中的存储地址之后,还包括:更新第一映射位图,将目标地址(扇区)在第一映射位图中对应的“位”设置为1。
进一步的,步骤S4040中,还可以包括将已经更新的映射位图同步到所述安全存储设备,保存为第二映射位图。
在步骤S4050中,安全层205转发已经修改过的,或者没有修改过的硬件指令到硬件层206。本实施例中,安全层205的转储工作对于上层应用以及用户完全透明,不影响现有计算机操作、应用系统的工作流程。
本实施例提供的上述方法不仅可以在计算机终端系统中使用,还可以应用在任何包含应用层、操作系统内核层、硬件层的计算设备和智能终端上,在硬件层执行指令前,实现指令级转移存储(即基于硬件存储指令的转移存储)。
根据上述数据读取过程,参考图13,本实施例中提供了一种数据安全读取方法。该方法包括:
S5010,接收硬件指令;
S5020,分析所述硬件指令;
S5030,判断该硬件指令是否为读取指令;
S5040,如果是读取指令,获取读取指令中的源地址,判断所述源地址是否为存储设备100上的地址;
S5050,如果所述源地址不是存储设备100上的地址,查找第一映射位图,并根据映射位图的数据修改读取指令中的读取地址;
S5060,将修改后的硬件指令发送到硬件层。
步骤S5010之前,该方法还可以包括S5000:将存储设备100上的第二映射位图同步到计算机终端系统200上,保存为第一映射位图。步骤S5010中,本实施例中,所述的硬件指令来自硬件映射层。
另外,结合上述运行时指令重组的方法,接收硬件指令的过程可以包括:采用运行时指令重组的方法获取硬件指令。
步骤S5030中,如果该硬件指令不是读取指令,则安全层205直接将硬件指令发送给硬件层去执行。
步骤S5040中,如果该读取指令的源地址已经为存储设备100上的地址,则安全层205不用再次查找第一映射位图中的数据,直接将硬件指令发送给硬件层去执行。
进一步的,为了节约网络资源,在本发明的一些实施例中,存储设备100可以作为多个终端系统的共享资源。
进一步的,基于上述的数据安全存储和数据安全读取方法,本发明第十一个实施例中提供了一种数据安全传输方法,如图14所示,包括如下步骤:
S7010,接收来自硬件映射层的硬件指令;
S7020,分析所述硬件指令;
S7030,判断该硬件指令是否为网络传输指令;
S7040,如果该硬件指令是传输指令,读取目标地址;
S7050,判断目标地址是否为安全地址;
S7060,如果是安全地址,将硬件指令发送到硬件层;如果不是安全地址,结束;
S7070,硬件层发送传输指令和数据到目标地址的终端系统;
S7080,目标地址的终端系统接收并利用数据安全存储方法保存数据。
步骤S7060中,如果判断目标地址不是安全地址,即目标地址的计算终端没有应用本发明中提供的数据安全存储和数据安全读取方法,那么不允许其作为目标地址进行网络传输操作。
步骤S7050中,判断目标地址是否为安全地址,本实施例中采用如下方法。如图15所示,安全服务器820通过网络与终端系统800、810连接,终端系统800、810在部署本发明上述实施例中提供的数据安全传输方法时,都自动向安全服务器820进行了注册操作,安全服务器820内部维护一个安全地址表,记录了已经注册的所有终端系统。当安全地址表有更改的时候,安全服务器820自动将更新的安全地址表发送给各个终端,终端系统800的架构包括应用层801,操作系统内核层802,安全层803以及硬件层804,安全层803负责维护该安全地址表。安全层803将根据目标地址是否在安全地址表中,判断目标地址是否为安全地址。即在步骤S7050中,如果目标地址列入了安全地址表,则目标地址为安全地址。
上述安全传输方法的实施,使木马或恶意工具即使取得了涉密信息也无法传输所取得的信息。
虽然本发明上述实施例中以计算机终端系统作为应用本发明提供的方法的主体,但是,任何手持设备、智能终端等能够提供文件或数据编辑、保存或传输的电子设备,统称为计算终端系统,都可以成为应用本发明提供的数据安全保存及传输方法的终端系统。
另外,本领域的技术人员可以知道上述的数据安全存储方法、读取方法及传输方法也可使用软件或硬件的方法实现,如果以软件实现,则上述方法对应的步骤以计算机代码的形式存储在计算机可读介质上,成为软件产品。
与上述的数据安全存储方法相对应,本发明第十二个实施例中,提供一种数据安全存储装置。参考图16,数据安全存储装置7100包括接收单元7110,指令分析单元7120,指令修改单元7130和发送单元7140。其中,接收单元7110与指令分析单元7120耦接,指令分析单元7120分别与指令修改单元7130以及发送单元7140耦接,发送单元7140分别与指令修改单元7130以及硬件层7200耦接。
接收单元7110适于接收硬件指令,本实施例中,所述硬件指令来自硬件映射层;指令分析单元7120适于分析所述硬件指令并判断所述硬件指令是否为存储指令;如果是存储指令,指令修改单元7130修改所述存储指令中的目标地址为对应的在安全存储设备上的存储地址,然后将修改后的存储指令发送给发送单元7140;如果不是存储指令,指令分析单元7120直接将硬件指令发送给发送单元7140;发送单元7150适于将接收到的指令发送给硬件层7200。
进一步的,该数据安全存储装置还可以包括更新单元7150和同步单元7160。其中,更新单元7150与指令修改单元7130耦接;同步单元7160与更新单元7150耦接。
所述更新单元7150适于在指令修改单元7130修改所述存储指令之后,更新映射位图中所述目标地址对应的位。本实施例中,将存储指令目标地址包含的扇区,在第一映射位图中对应的“位”数据置“1”,表示已经转储。
所述同步单元7160适于建立计算终端系统与所述安全存储设备的通讯,并将映射位图在所述计算终端系统和所述安全存储设备之间进行同步。具体的,在计算终端系统启动时,同步单元7160建立计算终端系统与所述安全存储设备的通讯,并将所述安全存储设备上的第二映射位图同步到所述计算终端系统,保存为第一映射位图。
如果将所述安全存储设备上的第二映射位图同步到所述计算终端系统失败,表示计算终端系统与安全存储设备是第一次通讯,同步单元7160将计算机终端系统中的本地存储空间映射到所述安全存储设备上,并建立映射位图和第二映射位图。本实施例中,先在安全存储装置上建立第二映射位图,然后同步到本地,成为第一映射位图。
当更新单元7150更新了第一映射位图(即映射位图)中所述目标地址对应的位,同步单元7160将把更新后的第一映射位图发送给安全存储设备,并在安全存储设备上保存为第二映射位图。
本实施例中,所述安全存储设备为远程存储设备,所述远程存储设备被多个计算终端系统共享。所述硬件指令为硬件端口I/O指令。
进一步的,与上述的数据安全读取方法相对应,本发明的第十三个实施例中提供了一种数据安全读取装置。参考图17,数据安全读取装置8100包括:接收单元8110,指令分析单元8120,指令修改单元8130以及发送单元8140。其中,接收单元8110与指令分析单元8120耦接,指令分析单元8120分别与指令修改单元8130以及发送单元8140耦接,指令修改单元8130还与发送单元8140耦接。发送单元8140与硬件层8200耦接。
所述接收单元8110适于接收硬件指令,本实施例中,所述硬件指令来自硬件映射层。所述指令分析单元8120适于分析所述硬件指令并判断所述硬件指令是否为读取指令,如果所述硬件指令是读取指令,获取读取指令的源地址并判断所述源地址是否为安全存储设备上的地址。如果所述硬件指令不是读取指令,或者所述源地址是安全存储设备上的地址,指令分析单元8120将所述硬件指令发送到发送单元8140。如果所述源地址不是安全存储设备上的地址,指令修改单元8130查找映射位图,并根据映射位图的数据修改所述读取指令中的读取地址。与上述映射位图相同,本实施例中所述映射位图用于表示本地存储地址的数据是否转储到所述安全存储设备。具体的,指令修改单元8130查找源地址包含的扇区在第一映射位图中对应的位。如果“位”数据显示为1,表示已经发生转储,如果“位”数据显示为0,表示没有发生转储。如果已经发生转储,指令修改单元8130将所述源地址(读取地址)改为对应的转储地址,并将修改后的硬件指令发送给发送单元8140。
进一步的,所述数据安全读取装置还可以包括同步单元8150。所述同步单元8150与指令修改单元8130耦接。所述同步单元8150适于建立计算终端系统与所述安全存储设备的通讯,并将映射位图在所述计算终端系统和所述安全存储设备之间进行同步。具体的,同步单元8150在计算终端系统启动时,建立计算终端系统与所述安全存储设备的通讯,并将所述安全存储设备上的第二映射位图同步到所述计算终端系统,保存为第一映射位图,提供指令修改单元8130使用。
本实施例中,所述安全存储设备为远程存储设备,所述远程存储设备被多个计算终端系统共享。在本发明的其他实施例中,所述的安全存储设备也可以为本地存储设备。
本领域技术人员可以知道,安全层的实现方法也可以在操作系统内核层至硬件层中的各个层内完成。具体功能的实现位置并不脱离本发明的精神和范围。
上述实施例中详细的介绍了本发明提供的安全存储方法和装置,与现有技术相比,具有如下优点:1、数据安全存储方法实现了指令级数据转储即数据全转储,以此为基础,实现了计算终端系统全运行周期的数据安全存储方法,一方面,使木马或恶意工具即使取得了涉密信息也无法保存所取得的信息,使数据始终存在于可控的安全范围内;另一方面,本地将不再保存在涉密状态下的任何数据,因此防止了涉密人员的主动泄密和被动泄密;2、接收来自硬件映射层的硬件指令可以100%的筛查所有指令,进一步提高数据安全性。
上述实施例中还详细的介绍了本发明提供的安全读取方法和装置,,与现有技术相比,具有如下优点:1、数据安全读取方法配合数据安全存储方法使数据始终存在于可控的安全范围内,并且保证在安全存储数据(转储)之后,可以将转储数据读出;由于本地将不再保存在涉密状态下的任何数据,因此防止了涉密人员的主动泄密和被动泄密;2、安全存储设备为远程存储设备时,可以为多个终端共享,提高安全存储设备的空间使用效率。
在本发明的其他实施例中,安全层的实现方法也可以在操作系统内部的最底层至硬件层的最上层中的各个层内完成。本领域技术人员可以知道,具体功能的实现位置并不脱离本发明的精神和范围。
本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。

Claims (18)

1.一种运行时指令重组方法,其特征在于,包括:
缓存指令运行环境;
获取待调度的机器指令片段;在所述获取的机器指令片段的最后一条指令前,插入第二跳转指令,所述第二跳转指令指向指令重组平台的入口地址,生成重组指令片段;将所述缓存的指令运行环境中的地址寄存器的值修改为重组指令片段的地址;
恢复所述指令运行环境;所述指令运行环境中的地址寄存器的值为修改后的值。
2.如权利要求1所述的运行时指令重组方法,其特征在于,获取待调度的机器指令片段包括:
从CPU地址寄存器读取待调度的机器指令地址;
从所述机器指令地址读取机器指令片段,所述机器指令片段最后一条指令为跳转指令。
3.如权利要求2所述的运行时指令重组方法,其特征在于,从所述机器指令地址读取机器指令片段包括:
检索所述机器指令地址对应的机器指令,直到发现第一个跳转指令;
所述跳转指令包括Jump指令和Call指令。
4.如权利要求1所述的运行时指令重组方法,其特征在于,在缓存指令运行环境之后,获取待调度的机器指令片段之前,还包括:
利用所述地址寄存器的值查找地址对应表;所述地址对应表用于表示待重组的机器指令片段是否具有已保存的重组过的指令片段;
如果找到相应的记录,将所述地址寄存器的值修改为记录中的值,恢复所述指令运行环境;所述指令运行环境中的地址寄存器的值为修改后的值。
5.如权利要求4所述的运行时指令重组方法,其特征在于,还包括:
利用重组指令片段的地址与所述缓存的指令运行环境中的地址寄存器的修改前的值在所述地址对应表中建立一条记录。
6.如权利要求1所述的运行时指令重组方法,其特征在于,在插入第二跳转指令之前,还包括:
解析所述机器指令片段,利用指令集匹配所述机器指令片段,得到待处理的目标机器指令;
按照预定的方式,修改所述目标机器指令。
7.如权利要求6所述的运行时指令重组方法,其特征在于,
所述目标机器指令为存储/读取指令;
按照预定的方式,修改所述目标机器指令包括:修改其中的存储和读取地址为安全存储设备上的地址。
8.如权利要求6所述的运行时指令重组方法,其特征在于,
所述目标机器指令为I/O指令;
按照预定的方式,修改所述目标机器指令包括:将所述I/O指令中的输入指令全部阻止。
9.如权利要求6所述的运行时指令重组方法,其特征在于,
所述目标机器指令为网络传输指令;
按照预定的方式,修改所述目标机器指令包括:检验所述网络传输指令中的目标地址对应的远端计算设备是否为安全地址;如果不是,阻止所述网络传输指令。
10.一种运行时指令重组方法,其特征在于,包括:
缓存指令运行环境;
获取待调度的机器指令片段;
反汇编所述机器指令片段,得到汇编指令片段;
在所述汇编指令片段的最后一条指令前,插入第二跳转指令,生成重组指令片段;所述第二跳转指令指向指令重组平台的入口地址;
汇编所述汇编指令片段,得到重组后的机器指令片段;将所述缓存的指令运行环境中的地址寄存器的值修改为重组指令片段的地址;
恢复所述指令运行环境;所述指令运行环境中的地址寄存器的值为修改后的值。
11.一种运行时指令重组装置,其特征在于,包括:
指令运行环境缓存和恢复单元,适于缓存和恢复指令运行环境;
指令获取单元,适于在指令运行环境缓存和恢复单元缓存指令运行环境后,获取待调度的机器指令片段;
指令重组单元,适于在所述获取的机器指令片段的最后一条指令前,插入第二跳转指令,所述第二跳转指令指向指令重组平台的入口地址,解析、修改所述待调度的机器指令片段,以生成重组指令片段;和
指令替换单元,适于将所述缓存的指令运行环境中的地址寄存器的值修改为重组指令片段的地址。
12.如权利要求11所述的运行时指令重组装置,其特征在于,所述指令获取单元适于从CPU地址寄存器读取待调度的机器指令地址,并从所述机器指令地址读取机器指令片段,所述机器指令片段最后一条指令为跳转指令。
13.如权利要求11所述的运行时指令重组装置,其特征在于,还包括:指令检索单元,适于利用所述缓存的指令运行环境中的地址寄存器的值查找地址对应表;所述地址对应表用于表示待重组的机器指令片段是否具有已保存的重组过的指令片段;
如果找到相应的记录,指令检索单元适于调用指令替换单元,将所述地址寄存器的值修改为记录中的值;
如果没有找到相应的记录,指令检索单元适于利用重组指令片段的地址与所述缓存的指令运行环境中的地址寄存器的修改前的值在所述地址对应表中建立一条记录。
14.如权利要求11所述的运行时指令重组装置,其特征在于,所述指令重组单元包括:
指令解析单元,适于利用指令集匹配所述机器指令片段,得到待处理的目标机器指令;
指令修改单元,适于按照预定的方式,修改所述目标机器指令。
15.如权利要求14所述的运行时指令重组装置,其特征在于,如果所述目标机器指令为存储/读取指令,所述指令修改单元适于修改其中的存储和读取地址为安全存储设备上的地址。
16.如权利要求14所述的运行时指令重组装置,其特征在于,如果所述目标机器指令为I/O指令,所述指令修改单元适于将所述I/O指令中的输入指令全部阻止。
17.如权利要求14所述的运行时指令重组装置,其特征在于,如果所述目标机器指令为网络传输指令,所述指令修改单元适于检验所述网络传输指令中的目标地址对应的远端计算设备是否为安全地址;如果不是,所述指令修改单元适于阻止所述网络传输指令。
18.如权利要求11所述的运行时指令重组装置,其特征在于,所述指令重组单元包括:
反汇编单元,适于在解析、修改所述待调度的机器指令片段之前,反汇编所述待调度的机器指令片段,生成待调度的汇编指令片段;
汇编单元,适于在解析、修改所述待调度的机器指令片段之后,汇编重组后的汇编指令片段,得到机器码表示的重组指令片段。
CN201180064951.XA 2011-04-29 2011-04-29 运行时指令重组方法及装置 Expired - Fee Related CN103299270B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2011/073495 WO2012145917A1 (zh) 2011-04-29 2011-04-29 运行时指令重组方法及装置

Publications (2)

Publication Number Publication Date
CN103299270A CN103299270A (zh) 2013-09-11
CN103299270B true CN103299270B (zh) 2017-03-08

Family

ID=47071569

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180064951.XA Expired - Fee Related CN103299270B (zh) 2011-04-29 2011-04-29 运行时指令重组方法及装置

Country Status (4)

Country Link
US (2) US8893272B2 (zh)
JP (1) JP2014515858A (zh)
CN (1) CN103299270B (zh)
WO (1) WO2012145917A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103677770B (zh) * 2012-09-06 2016-12-21 中天安泰(北京)信息技术有限公司 指令重组方法及装置
US9489300B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9489294B2 (en) * 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9489299B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US11163572B2 (en) * 2014-02-04 2021-11-02 Micron Technology, Inc. Memory systems and memory control methods
CN103942499B (zh) * 2014-03-04 2017-01-11 中天安泰(北京)信息技术有限公司 基于移动存储器的数据黑洞处理方法及移动存储器
US10860322B2 (en) * 2015-10-30 2020-12-08 Arm Limited Modifying behavior of a data processing unit using rewritable behavior mappings of instructions
CN109478144B (zh) * 2017-07-05 2021-12-14 上海寒武纪信息科技有限公司 一种数据处理装置和方法
US11635947B2 (en) 2020-05-22 2023-04-25 Fujitsu Limited Instruction translation support method and information processing apparatus
US11556317B2 (en) 2020-05-22 2023-01-17 Fujitsu Limited Instruction translation support method and information processing apparatus

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7620987B2 (en) * 2005-08-12 2009-11-17 Microsoft Corporation Obfuscating computer code to prevent an attack
CN101604370A (zh) * 2009-07-06 2009-12-16 中国人民解放军信息技术安全研究中心 一种高兼容性的监控Windows内核函数调用的方法
CN101706734A (zh) * 2009-11-10 2010-05-12 中国科学院计算技术研究所 二进制翻译中间接跳转指令的翻译方法及其系统
US7886287B1 (en) * 2003-08-27 2011-02-08 Avaya Inc. Method and apparatus for hot updating of running processes

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7287166B1 (en) * 1999-09-03 2007-10-23 Purdue Research Foundation Guards for application in software tamperproofing
CN1373402A (zh) 2001-02-28 2002-10-09 廖瑞民 硬盘数据保全复原装置
WO2002091146A2 (en) * 2001-05-09 2002-11-14 Ecd Systems, Inc. Systems and methods for the prevention of unauthorized use and manipulation of digital content
CN1230744C (zh) 2002-08-16 2005-12-07 华为技术有限公司 一种嵌入式系统软件补丁的实现和控制方法
US7526805B2 (en) * 2004-06-12 2009-04-28 Microsoft Corporation Thread protection
FR2877118B1 (fr) * 2004-10-22 2007-01-19 Oberthur Card Syst Sa Protection contre les attaques par generation de fautes sur les instructions de saut
JP4676499B2 (ja) * 2004-11-04 2011-04-27 テルコーディア ライセンシング カンパニー, リミテッド ライアビリティ カンパニー ネットワークフロー内のエクスプロイトコードの検出
CN101278260B (zh) * 2005-06-07 2012-07-18 威睿公司 使软件程序免于弱点和攻击的约束注入方法
CN100507864C (zh) 2006-01-19 2009-07-01 刘文斌 基于立即还原型硬盘保护卡的数据保护及还原方法
JP2007323149A (ja) 2006-05-30 2007-12-13 Matsushita Electric Ind Co Ltd メモリデータ保護装置及びicカード用lsi
KR100789722B1 (ko) 2006-09-26 2008-01-02 한국정보보호진흥원 웹 기술을 사용하여 전파되는 악성코드 차단시스템 및 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7886287B1 (en) * 2003-08-27 2011-02-08 Avaya Inc. Method and apparatus for hot updating of running processes
US7620987B2 (en) * 2005-08-12 2009-11-17 Microsoft Corporation Obfuscating computer code to prevent an attack
CN101604370A (zh) * 2009-07-06 2009-12-16 中国人民解放军信息技术安全研究中心 一种高兼容性的监控Windows内核函数调用的方法
CN101706734A (zh) * 2009-11-10 2010-05-12 中国科学院计算技术研究所 二进制翻译中间接跳转指令的翻译方法及其系统

Also Published As

Publication number Publication date
US20140047222A1 (en) 2014-02-13
US20150012732A1 (en) 2015-01-08
JP2014515858A (ja) 2014-07-03
CN103299270A (zh) 2013-09-11
WO2012145917A1 (zh) 2012-11-01
US8893272B2 (en) 2014-11-18

Similar Documents

Publication Publication Date Title
CN103299270B (zh) 运行时指令重组方法及装置
CN103299284B (zh) 数据安全读取方法及装置
CN103942499B (zh) 基于移动存储器的数据黑洞处理方法及移动存储器
CN103679039B (zh) 数据安全存储方法及装置
CN103329141B (zh) 数据安全存储方法及装置
CN113835685B (zh) 一种基于拟态数据库的网络操作系统设计方法
CN106687971A (zh) 用来减少软件的攻击面的自动代码锁定
CN103907098A (zh) 用于管理程序环境中的关键地址空间保护的系统和方法
CN103679040B (zh) 数据安全读取方法及装置
CN107179878A (zh) 基于应用优化的数据存储的方法和装置
CN103927493B (zh) 数据黑洞处理方法
CN103729598B (zh) 数据安全互联系统及其建立方法
CN103942492B (zh) 单机版数据黑洞处理方法及计算设备
CN103679041B (zh) 数据安全读取方法及装置
CN104618191B (zh) 一种主机与裸存储块之间的通信故障检测方法和装置
CN103677746A (zh) 指令重组方法及装置
CN103677769B (zh) 指令重组方法及装置
CN103679042B (zh) 数据安全存储方法及装置
CN103677770B (zh) 指令重组方法及装置
Rickett et al. Optimizing the Cray Graph Engine for performant analytics on cluster, SuperDome Flex, Shasta systems and cloud deployment
CN103729600A (zh) 数据安全互联系统建立方法及数据安全互联系统
CN103729601B (zh) 数据安全互联系统及数据安全互联系统建立方法
Lee Building Trusted Execution Environments
Sulewski et al. Experimental Investigation of Container-based Virtualization Platforms For a Cassandra Cluster

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100097 HAIDIAN, BEIJING TO: 100071 FENGTAI, BEIJING

TA01 Transfer of patent application right

Effective date of registration: 20150121

Address after: 100071 Beijing city Fengtai District Xiaotun Road No. 89 aerospace standard tower

Applicant after: The safe and sound Information Technology Co., Ltd in sky in Beijing

Address before: 100097 Beijing city Haidian District landianchang road Jin Yuan era business center B block 2-6B1

Applicant before: Beijing Zhongtian Antai Technology Co., Ltd.

C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: 100071 Beijing city Fengtai District Xiaotun Road No. 89 aerospace standard tower

Applicant after: Zhongtian Aetna (Beijing) Information Technology Co. Ltd.

Address before: 100071 Beijing city Fengtai District Xiaotun Road No. 89 aerospace standard tower

Applicant before: The safe and sound Information Technology Co., Ltd in sky in Beijing

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: BEIJING ZHONGTIAN ANTAI INFORMATION TECHNOLOGY CO., LTD. TO: ZHONGTIAN ANTAI (BEIJING) INFORMATION TECHNOLOGY CO., LTD.

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170308

Termination date: 20190429

CF01 Termination of patent right due to non-payment of annual fee