CN113312088A - 一种程序指令的执行方法及装置 - Google Patents

一种程序指令的执行方法及装置 Download PDF

Info

Publication number
CN113312088A
CN113312088A CN202110728572.1A CN202110728572A CN113312088A CN 113312088 A CN113312088 A CN 113312088A CN 202110728572 A CN202110728572 A CN 202110728572A CN 113312088 A CN113312088 A CN 113312088A
Authority
CN
China
Prior art keywords
address
function
instruction
jump
target
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.)
Granted
Application number
CN202110728572.1A
Other languages
English (en)
Other versions
CN113312088B (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.)
Beijing Entropy Nuclear Technology Co ltd
Original Assignee
Beijing Entropy Nuclear 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 Beijing Entropy Nuclear Technology Co ltd filed Critical Beijing Entropy Nuclear Technology Co ltd
Priority to CN202110728572.1A priority Critical patent/CN113312088B/zh
Publication of CN113312088A publication Critical patent/CN113312088A/zh
Application granted granted Critical
Publication of CN113312088B publication Critical patent/CN113312088B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30069Instruction skipping instructions, e.g. SKIP
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Abstract

本发明实施例提供了一种程序指令的执行方法和装置,该方法包括:在执行第一程序之前,针对其中的若干预定函数,记录其起始地址和结束地址,和其中所有地址跳转指令的目标地址;预定函数中包括第一函数和第二函数;在执行第一程序时,当在第一函数中执行第一地址跳转指令时,确定第一地址跳转指令的目标地址,是否处在已记录的第一函数的起始地址至结束地址之间、且处于已记录的第一函数的所有地址跳转指令的目标地址之中;若结果为否,则中止执行第一地址跳转指令;当在第一函数中执行第一函数调用指令时,确定第一函数调用指令的目标地址,是否为已记录的第一函数调用指令访问的第二函数的起始地址;若结果为否,则中止执行第一函数调用指令。

Description

一种程序指令的执行方法及装置
技术领域
本发明涉及微处理架构技术领域和虚拟机技术领域,尤其涉及一种程序指令的执行方法及装置。
背景技术
虚拟机(VM,Virtual Machine)是指一种字节码执行软件。例如,Java VM是一种与Java编程语言有关的虚拟机,由Java语言编写的Java代码经过编译工具转换成Java字节码(byte code)。Java字节码可在Java VM上运行。此外,基本上所有的脚本语言编写的程序都会由特定的VM来执行。但是,现有的大多数VM或者微处理器架构中,其指令执行并不完全安全,例如,在跳转指令执行时被攻击者修改指令访问地址,从而带来难以预计的安全问题。
因此,需要一种新的程序指令的执行方法。
发明内容
本发明的实施例提供一种程序指令的执行方法和装置,相较于传统的指令执行方法,该方法通过在程序加载/编译阶段,对于预定函数建立保存了预定函数起始、结束地址,以及其中所有地址跳转指令的目标地址的跳转表,从而在程序执行时,基于跳转表验证跳转指令的跳转范围是否合法,根据验证结果确定是否允许跳转指令执行。利用该方法可以防止程序执行过程中的非法跳转,提高指令执行的安全性。
本发明为解决上述技术问题采用的技术方案为,一方面提供一种程序指令的执行方法,包括:
在执行第一程序之前,
针对第一程序中的若干预定函数,记录各预定函数的起始地址和结束地址,以及各预定函数中的所有地址跳转指令的目标地址;所述预定函数中包括第一函数和第二函数;
在执行第一程序时,
当在第一函数中执行第一地址跳转指令时,确定所述第一地址跳转指令的目标地址,是否处在已记录的第一函数的起始地址至结束地址之间、且处于已记录的第一函数的所有地址跳转指令的目标地址之中;
若结果为否,则中止执行第一地址跳转指令;
当在第一函数中执行第一函数调用指令时,确定第一函数调用指令的目标地址,是否为已记录的第一函数调用指令访问的第二函数的起始地址;
若结果为否,则中止执行第一函数调用指令。
优选地,所述执行第一程序之前,为编译/加载第一程序时;
所述针对第一程序中的若干预定函数,记录各预定函数的起始地址和结束地址,以及各预定函数中的所有地址跳转指令的目标地址,包括:
针对第一程序中的若干预定函数建立各自对应的跳转表,在所述跳转表中记录其对应的函数的起始地址和结束地址,以及该函数中所有地址跳转指令的目标地址。
具体地,所述当在第一函数中执行第一地址跳转指令时,确定所述第一地址跳转指令的目标地址,是否处在已记录的第一函数的起始地址至结束地址之间、且处于已记录的第一函数的所有地址跳转指令的目标地址之中,包括:
当在第一函数中执行第一地址跳转指令时,确定所述第一地址跳转指令的目标地址,是否处在第一函数对应的跳转表中记录的,第一函数的起始地址至结束地址之间、以及所有地址跳转指令的目标地址之中;
所述当在第一函数中执行第一函数调用指令时,确定第一函数调用指令的目标地址,是否为已记录的第一函数调用指令访问的第二函数的起始地址,包括:
当在第一函数中执行第一函数调用指令时,确定所述第一函数调用指令的目标地址,是否为第一函数调用指令访问的第二函数对应的跳转表中记录的第二函数的起始地址。
具体地,所述方法还包括,
在跳转表中记录其对应的预定函数中的所有地址跳转指令的目标地址时,在所述跳转表中建立所述目标地址的索引,以及将所述跳转指令指向的对象由目标地址替换为该目标地址的索引;
所述确定所述第一地址跳转指令的目标地址,是否处在第一函数对应的跳转表中记录的,所有地址跳转指令的目标地址之中,包括:
确定第一地址跳转指令指向的所述索引,是否在第一函数对应的跳转表中包括的索引的范围内。
优选地,第一地址跳转指令为Jump指令,第一函数调用指令为call指令。
优选地,所述程序指令为字节码指令,通过虚拟机执行。
具体地,所述虚拟机为Java虚拟机。
优选地,所述程序指令为微处理器指令,通过微处理器执行。
第二方面,提供一种程序指令的执行装置,包括:
预处理单元,配置为,在执行第一程序之前,针对第一程序中的若干预定函数,记录各预定函数的起始地址和结束地址,以及各预定函数中的所有地址跳转指令的目标地址;所述预定函数中包括第一函数和第二函数;
第一指令判断单元,配置为,在执行第一程序时,当在第一函数中执行第一地址跳转指令时,确定所述第一地址跳转指令的目标地址,是否处在已记录的第一函数的起始地址至结束地址之间、且处于已记录的第一函数的所有地址跳转指令的目标地址之中;
第一指令终止单元,配置为,若结果为否,则中止执行第一地址跳转指令;
第二指令判断单元,配置为,当在第一函数中执行第一函数调用指令时,确定第一函数调用指令的目标地址是否为已记录的第一函数调用指令访问,的第二函数的起始地址;
第二指令终止单元,配置为,若结果为否,则中止执行第一函数调用指令。
第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-8中任一项的所述的方法。
附图说明
为了更清楚说明本发明实施例的技术方案,下面将对实施例描述中所需使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种程序指令的执行方法的流程图;
图2为本发明实施例提供的一种函数的函数体示意图;
图3为本发明实施例提供的一种函数的跳转表的示意图;
图4为本发明实施例提供的一种程序指令的执行装置的结构图;
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
当前,无论是通过VM执行的脚本语言的字节码指令,还是微处理器指令,都会包含若干类引起程序非顺序执行的跳转指令。比如,Jmp指令,作用为跳转到地址;Call指令,作用为函数调用;Ret指令,作用为函数返回。而在大多数VM或者微处理器架构中,Jmp/Call的目标地址可以是整个指令空间。因此,攻击者可以在这些指令运行时,通过修改指令的访问地址,跳转到原有的目标地址之外的地址,从而带来安全上的隐患,比如修改Call指令的目标地址(通常函数调用的目标地址为其目标函数的起始地址),使得Call指令直接访问目标函数的中间位置,从而避开通常位于函数开头的验证代码,也就是说避开了目标函数的安全验证,根据目标函数的功能的重要性程度,攻击者的这种攻击会带来与之对应的安全问题。
为了解决上述技术问题,本发明实施例提供了一种程序指令的执行方法。图1为本发明实施例提供的一种程序指令的执行方法的流程图。如图1所示,该方法的流程至少包括:
步骤11,在执行第一程序之前,针对第一程序中的若干预定函数,记录各预定函数的起始地址和结束地址,以及各预定函数中的所有地址跳转指令的目标地址;预定函数中包括第一函数和第二函数。
在不同的实施例中,第一程序可以是不同种类的指令构成的程序。例如,在一个实施例中,第一程序为字节码程序,由字节码指令构成,通过虚拟机执行。注意,本说明书中所述虚拟机不是指操作系统虚拟化技术中的虚拟机,而是指可用于执行字节码指令的虚拟机。
在更具体的实施例中,所述虚拟机可以为不同种类的虚拟机,在一个例子中,该虚拟机可以为Java虚拟机。在其他的例子,该虚拟机也可以是其它类别的可执行字节码的虚拟机。
在一个实施例中,第一程序也可以是微处理器指令构成的程序,微处理器指令可以通过微处理器执行,即可以通过硬件来执行。
通常在执行程序之前,会对程序进行编译和/或加载操作,所以可以在对程序进行编译或加载时,记录其中预定函数的起始、结束地址和函数中指令跳转地址。因此,在一个实施例中,所述执行第一程序之前具体可以为编译/加载第一程序时。
在不同的实施例中,预定函数可以是第一程序中的全部/部分函数,还可以根据预定的规则来确定。在一个实施例中,可以针对第一程序中的若干预定函数建立各自对应的跳转表,在所述跳转表中记录其对应的函数的起始地址和结束地址,以及该函数中所有地址跳转指令的目标地址;所述预定函数中包括第一函数和第二函数。
在一个实施例中,可以在跳转表中记录其对应的预定函数中的所有地址跳转指令的目标地址时,在跳转表中建立所述目标地址的索引,以及将地址跳转指令指向的对象由目标地址替换为该目标地址的索引。在一个例子中,还可以在跳转表中设置例如为跳转模式的标识,用于确定跳转表中是否建立了所述目标地址的索引,并在地址跳转指令运行中根据所述索引确定其目标地址。
图2为本发明实施例提供的一种函数的函数体示意图,如图2所示,该函数中包括3个地址跳转指令(图3中为3个cond.JMP条件跳转指令,既满足一定条件下进行地址跳转的指令),分别指向地址(该实施例中为相对于函数起始地址的偏移地址)10、25和21。可以在程序编译和加载时,针对该函数生成如图3所示的跳转表,该跳转表中记录了该函数的起始(Base)、结束地址,以及各个地址跳转指令指向的目标地址,即地址10、25和21。图3所示实施例中,跳转表中还包括设置跳转模式的标识,跳转模式可以包括例如为0/1的两种模式,其中0模式,指示在执行时,地址跳转指令的目标是一个访问地址(例如为相对函数起始地址的偏移地址);1模式,指示在执行时,地址跳转指令的目标指向跳转表的索引。在一个例子中,索引可以以0开始,例如在图3的表中,索引0(图3中未示出)可以指向第一个跳转地址10。
步骤12,在执行第一程序时,当在第一函数中执行第一地址跳转指令时,确定所述第一地址跳转指令的目标地址,是否处在已记录的第一函数的起始地址至结束地址之间、且处于已记录的第一函数的所有地址跳转指令的目标地址之中。
在上述建立跳转表的实施例中,可以在第一函数中执行地址跳转指令时,确定所述第一地址跳转指令的目标地址,是否处在第一函数对应的跳转表中记录的,第一函数的起始地址至结束地址之间、以及所有地址跳转指令的目标地址之中。
在上述在跳转表中建立跳转地址索引的实施例中,可以确定地址跳转指令指向的索引,是否在第一函数对应的跳转表中包括的索引的范围内。
在上述利用Java虚拟机执行指令的实施例中,第一地址跳转指令可以为Jump指令。在利用其他虚拟机或微处理器执行指令的实施例中,第一地址跳转指令也可以是其它虚拟机或微处理器中用于进行地址跳转的指令,本说明书对此不作限制。
步骤13,若步骤12中得到的确定结果为否,则中止执行第一地址跳转指令。
该步骤中,若步骤12中得到的确定结果为否,也就是说,第一地址跳转指令的目标地址不处于程序执行前已记录的第一函数的起始地址至结束地址之间、或者不处于已记录的第一函数所有地址跳转指令的目标地址之中(例如为跳转表中记录的),则中止第一地址跳转指令的执行。
如此,一方面可以防止第一函数中地址跳转指令访问函数外的地址,从而防止攻击者在程序运行时,修改地址跳转指令的目标地址,非法访问其它程序或函数正在合法使用的地址区域。另一方面,通过在执行前记录的精确的地址跳转列表,对运行时的第一函数中地址跳转指令可以访问的地址,进行精确验证和限定。
在一个实施例中,若步骤12中得到的确定结果为是,则继续执行第一地址跳转指令。在上述在跳转表中建立跳转地址索引的实施例中,可以根据第一地址跳转指令指向的跳转表中的索引,从跳转表中查找其目标地址,进而根据该目标地址,执行地址跳转指令。
步骤14,当在第一函数中执行第一函数调用指令时,确定第一函数调用指令的目标地址,是否为已记录的第一函数调用指令访问的第二函数的起始地址。
在上述建立跳转表的实施例中,可以在第一函数中执行第一函数调用指令时,确定所述第一函数调用指令的目标地址,是否为第一函数调用指令访问的第二函数对应的跳转表中记录的第二函数的起始地址。
在上述在跳转表建立地址跳转指令索引的实施例中,可以确定第一地址跳转指令指向的所述索引,是否在第一函数对应的跳转表中包括的索引的范围内。
在上述利用Java虚拟机执行指令的实施例中,第一函数调用指令可以为call指令。在利用其他虚拟机或微处理器执行指令的实施例中,第一地址跳转指令也可以是其它虚拟机或微处理器中用于进行函数调用的指令,本说明书对此不作限制。
在一个实施例中,若第一函数调用指令的目标地址指示的访问函数,为不确定是否具有对应跳转表的第三函数,可以先检查第三函数是否存在对应的跳转表,若检查结果为不存在,则直接根据第一函数调用指令的目标地址,执行第一函数调用指令。
步骤15,若步骤14中确定结果为否,则中止执行第一函数调用指令。
该步骤中,若步骤14中得到的确定结果为否,也就是说,第一函数调用指令的目标地址不是第二函数的起始地址,则中止第一函数调用指令的执行。
如此,可以防止第一函数调用指令执行时访问第二函数的起始位置以外的其它位置。从而防止攻击者在程序运行时,修改函数调用指令的目标地址,非法跳转到其它函数的非入口地址区域,从而例如避开了其它函数通常在入口地址之后安全验证代码的检验。
在一个实施例中,若步骤14中得到的确定结果为是,则继续执行第一函数调用指令。
根据又一方面的实施例,提供了一种程序指令的执行装置。图2为本发明实施例提供的一种程序指令的执行装置的结构图,如图4所示,该装置400包括:
预处理单元41,配置为,在执行第一程序之前,针对第一程序中的若干预定函数,记录各预定函数的起始地址和结束地址,以及各预定函数中的所有地址跳转指令的目标地址;所述预定函数中包括第一函数和第二函数;
第一指令判断单元42,配置为,在执行第一程序时,当在第一函数中执行第一地址跳转指令时,确定所述第一地址跳转指令的目标地址,是否处在已记录的第一函数的起始地址至结束地址之间、且处于已记录的第一函数的所有地址跳转指令的目标地址之中;
第一指令终止单元43,配置为,若结果为否,则中止执行第一地址跳转指令;
第二指令判断单元44,配置为,当在第一函数中执行第一函数调用指令时,确定第一函数调用指令的目标地址,是否为已记录的第一函数调用指令访问的第二函数的起始地址;
第二指令终止单元45,配置为,若结果为否,则中止执行第一函数调用指令。
根据又一方面的实施例,还提供一种计算机可读介质,包括存储于其上的计算机程序,所述计算机在运行时执行上述的方法。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种程序指令的执行方法,包括:
在执行第一程序之前,
针对第一程序中的若干预定函数,记录各预定函数的起始地址和结束地址,以及各预定函数中的所有地址跳转指令的目标地址;所述预定函数中包括第一函数和第二函数;
在执行第一程序时,
当在第一函数中执行第一地址跳转指令时,确定所述第一地址跳转指令的目标地址,是否处在已记录的第一函数的起始地址至结束地址之间、且处于已记录的第一函数的所有地址跳转指令的目标地址之中;
若结果为否,则中止执行第一地址跳转指令;
当在第一函数中执行第一函数调用指令时,确定第一函数调用指令的目标地址,是否为已记录的第一函数调用指令访问的第二函数的起始地址;
若结果为否,则中止执行第一函数调用指令。
2.根据权利要求1的方法,其中,
所述执行第一程序之前,为编译/加载第一程序时;
所述针对第一程序中的若干预定函数,记录各预定函数的起始地址和结束地址,以及各预定函数中的所有地址跳转指令的目标地址,包括:
针对第一程序中的若干预定函数建立各自对应的跳转表,在所述跳转表中记录其对应的函数的起始地址和结束地址,以及该函数中所有地址跳转指令的目标地址。
3.根据权利要求2的方法,其中:
所述当在第一函数中执行第一地址跳转指令时,确定所述第一地址跳转指令的目标地址,是否处在已记录的第一函数的起始地址至结束地址之间、且处于已记录的第一函数的所有地址跳转指令的目标地址之中,包括:
当在第一函数中执行第一地址跳转指令时,确定所述第一地址跳转指令的目标地址,是否处在第一函数对应的跳转表中记录的,第一函数的起始地址至结束地址之间、以及所有地址跳转指令的目标地址之中;
所述当在第一函数中执行第一函数调用指令时,确定第一函数调用指令的目标地址,是否为已记录的第一函数调用指令访问的第二函数的起始地址,包括:
当在第一函数中执行第一函数调用指令时,确定所述第一函数调用指令的目标地址,是否为第一函数调用指令访问的第二函数对应的跳转表中记录的第二函数的起始地址。
4.根据权利要求3的方法,还包括,
在跳转表中记录其对应的预定函数中的所有地址跳转指令的目标地址时,在所述跳转表中建立所述目标地址的索引,以及将所述跳转指令指向的对象由目标地址替换为该目标地址的索引;
所述确定所述第一地址跳转指令的目标地址,是否处在第一函数对应的跳转表中记录的,所有地址跳转指令的目标地址之中,包括:
确定第一地址跳转指令指向的所述索引,是否在第一函数对应的跳转表中包括的索引的范围内。
5.根据权利要求1的方法,其中,第一地址跳转指令为Jump指令,第一函数调用指令为call指令。
6.根据权利要求1的方法,其中,所述程序指令为字节码指令,通过虚拟机执行。
7.根据权利要求6的方法,其中,所述虚拟机为Java虚拟机。
8.根据权利要求1的方法,其中,所述程序指令为微处理器指令,通过微处理器执行。
9.一种程序指令的执行装置,包括:
预处理单元,配置为,在执行第一程序之前,针对第一程序中的若干预定函数,记录各预定函数的起始地址和结束地址,以及各预定函数中的所有地址跳转指令的目标地址;所述预定函数中包括第一函数和第二函数;
第一指令判断单元,配置为,在执行第一程序时,当在第一函数中执行第一地址跳转指令时,确定所述第一地址跳转指令的目标地址,是否处在已记录的第一函数的起始地址至结束地址之间、且处于已记录的第一函数的所有地址跳转指令的目标地址之中;
第一指令终止单元,配置为,若结果为否,则中止执行第一地址跳转指令;
第二指令判断单元,配置为,当在第一函数中执行第一函数调用指令时,确定第一函数调用指令的目标地址,是否为已记录的第一函数调用指令访问的第二函数的起始地址;
第二指令终止单元,配置为,若结果为否,则中止执行第一函数调用指令。
10.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-8中任一项的所述的方法。
CN202110728572.1A 2021-06-29 2021-06-29 一种程序指令的执行方法及装置 Active CN113312088B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110728572.1A CN113312088B (zh) 2021-06-29 2021-06-29 一种程序指令的执行方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110728572.1A CN113312088B (zh) 2021-06-29 2021-06-29 一种程序指令的执行方法及装置

Publications (2)

Publication Number Publication Date
CN113312088A true CN113312088A (zh) 2021-08-27
CN113312088B CN113312088B (zh) 2022-05-17

Family

ID=77380789

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110728572.1A Active CN113312088B (zh) 2021-06-29 2021-06-29 一种程序指令的执行方法及装置

Country Status (1)

Country Link
CN (1) CN113312088B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023116256A1 (zh) * 2021-12-24 2023-06-29 深圳前海微众银行股份有限公司 一种智能合约的控制流图生成方法及装置

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070073925A1 (en) * 2005-09-28 2007-03-29 Arc International (Uk) Limited Systems and methods for synchronizing multiple processing engines of a microprocessor
CN101620658A (zh) * 2009-07-14 2010-01-06 北京大学 一种Windows操作系统下钩子的检测方法
CN103699498A (zh) * 2013-11-25 2014-04-02 南京大学 一种应用程序关键数据保护系统及其保护方法
CN104123218A (zh) * 2013-04-23 2014-10-29 腾讯科技(深圳)有限公司 一种代码覆盖测试方法、装置和系统
CN105260659A (zh) * 2015-09-10 2016-01-20 西安电子科技大学 一种基于qemu的内核级代码重用型攻击检测方法
CN105787305A (zh) * 2016-02-26 2016-07-20 西北大学 一种抵抗符号执行和污点分析的软件保护方法
CN109086183A (zh) * 2018-07-12 2018-12-25 武汉斗鱼网络科技有限公司 一种应用程序的监控方法、装置、电子设备及存储介质
US20190005231A1 (en) * 2017-06-29 2019-01-03 International Business Machines Corporation Mitigation of code reuse attacks by restricted indirect branch instruction
US20190087359A1 (en) * 2015-09-15 2019-03-21 Gatekeeper Ltd. System and method for securely connecting to a peripheral device
CN109766690A (zh) * 2019-01-19 2019-05-17 北京工业大学 一种基于多策略指令检测的rop及变种攻击动态检测方法
CN109840410A (zh) * 2017-12-28 2019-06-04 中国科学院计算技术研究所 一种进程内数据隔离与保护的方法和系统
CN112580052A (zh) * 2019-09-30 2021-03-30 龙芯中科技术股份有限公司 计算机安全防护方法、芯片、设备以及存储介质
CN112784261A (zh) * 2021-01-04 2021-05-11 北京蓝军网安科技发展有限责任公司 用于程序运行的方法及相应的系统、计算机设备和介质

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070073925A1 (en) * 2005-09-28 2007-03-29 Arc International (Uk) Limited Systems and methods for synchronizing multiple processing engines of a microprocessor
CN101620658A (zh) * 2009-07-14 2010-01-06 北京大学 一种Windows操作系统下钩子的检测方法
CN104123218A (zh) * 2013-04-23 2014-10-29 腾讯科技(深圳)有限公司 一种代码覆盖测试方法、装置和系统
CN103699498A (zh) * 2013-11-25 2014-04-02 南京大学 一种应用程序关键数据保护系统及其保护方法
CN105260659A (zh) * 2015-09-10 2016-01-20 西安电子科技大学 一种基于qemu的内核级代码重用型攻击检测方法
US20190087359A1 (en) * 2015-09-15 2019-03-21 Gatekeeper Ltd. System and method for securely connecting to a peripheral device
CN105787305A (zh) * 2016-02-26 2016-07-20 西北大学 一种抵抗符号执行和污点分析的软件保护方法
US20190005231A1 (en) * 2017-06-29 2019-01-03 International Business Machines Corporation Mitigation of code reuse attacks by restricted indirect branch instruction
CN109840410A (zh) * 2017-12-28 2019-06-04 中国科学院计算技术研究所 一种进程内数据隔离与保护的方法和系统
CN109086183A (zh) * 2018-07-12 2018-12-25 武汉斗鱼网络科技有限公司 一种应用程序的监控方法、装置、电子设备及存储介质
CN109766690A (zh) * 2019-01-19 2019-05-17 北京工业大学 一种基于多策略指令检测的rop及变种攻击动态检测方法
CN112580052A (zh) * 2019-09-30 2021-03-30 龙芯中科技术股份有限公司 计算机安全防护方法、芯片、设备以及存储介质
CN112784261A (zh) * 2021-01-04 2021-05-11 北京蓝军网安科技发展有限责任公司 用于程序运行的方法及相应的系统、计算机设备和介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023116256A1 (zh) * 2021-12-24 2023-06-29 深圳前海微众银行股份有限公司 一种智能合约的控制流图生成方法及装置

Also Published As

Publication number Publication date
CN113312088B (zh) 2022-05-17

Similar Documents

Publication Publication Date Title
US11113384B2 (en) Stack overflow protection by monitoring addresses of a stack of multi-bit protection codes
US9223964B2 (en) Detecting JAVA sandbox escaping attacks based on JAVA bytecode instrumentation and JAVA method hooking
US20090271867A1 (en) Virtual machine to detect malicious code
US9811663B2 (en) Generic unpacking of applications for malware detection
US9218467B2 (en) Intra stack frame randomization for protecting applications against code injection attack
CN107330320B (zh) 应用进程监控的方法和装置
CN105260659B (zh) 一种基于qemu的内核级代码重用型攻击检测方法
US20070285271A1 (en) Verifiable integrity guarantees for machine code programs
CN109388946B (zh) 恶意进程检测方法、装置、电子设备及存储介质
JP2010511227A (ja) 信頼性の低いアドレス空間への実行コードのコンパイル
CN107908444B (zh) 终端应用的挂钩方法及装置
KR101875225B1 (ko) 가상 머신에 의한 실행을 위한 프로그래밍의 중간 코드의 보안 프로세스, 컴퓨터 프로그램 및 장치
US11269988B2 (en) Automated software application verification system
CN113312088B (zh) 一种程序指令的执行方法及装置
CN115659333A (zh) 一种基于二进制插桩的沙箱、内存隔离方法及存储介质
CN116150739A (zh) 一种基于关键地址动态保护的栈溢出自动防御方法
CN114756856B (zh) 一种基于函数动态载入的代码重用攻击防御方法
US9122842B2 (en) Apparatus and method for enhancing security in heterogeneous computing environment
CN107209815B (zh) 用于使用返回导向编程的代码混淆的方法
Mortimer Removing ROP gadgets from OpenBSD
US11113392B2 (en) Executable binary code insertion
CN113672907A (zh) 基于JVM沙箱与黑白名单的Java安全防范方法、装置及介质
CN110597571A (zh) 一种非立即数跳转的保护方法及对应计算装置
KR102454845B1 (ko) 스마트 컨트랙트 재작성기
KR102271273B1 (ko) 네이티브 코드 분석방지 우회를 위한 프로세스 래핑 방법, 이를 수행하기 위한 기록 매체 및 장치

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant