CN112199163A - 分析解释例程的虚拟指令方法、装置、设备及存储介质 - Google Patents
分析解释例程的虚拟指令方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112199163A CN112199163A CN202011114571.XA CN202011114571A CN112199163A CN 112199163 A CN112199163 A CN 112199163A CN 202011114571 A CN202011114571 A CN 202011114571A CN 112199163 A CN112199163 A CN 112199163A
- Authority
- CN
- China
- Prior art keywords
- virtual
- instruction
- operand stack
- instructions
- stack
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明实施例公开了一种分析解释例程的虚拟指令方法、装置、设备及存储介质,其中,所述分析解释例程的虚拟指令方法,包括:将虚拟机保护的虚拟指令集进行简化和归类;简化和归类后分别形成为虚拟加载和存储指令、虚拟运算指令、虚拟退栈指令和虚拟空指令。通过分析每个虚指令解释例程的指令对局部变量区的读次数,对操作数栈的读次数和栈顶的改变值,以实现对虚指令的识别和宽分类目的。
Description
技术领域
本发明涉及分析虚拟指令技术领域,也涉及信息安全、软件分析、逆向工程和计算机软件技术领域,尤指一种分析解释例程的虚拟指令方法、装置、设备及存储介质。
背景技术
虚拟机保护技术常常被木马等恶意程序利用进行免杀,增加恶意软件查杀工具分析和检测的难度和开销,如何有效查杀恶意程序减少其对用户的威胁,虚拟机保护的逆向分析恶意软件检测中具有至关重要的作用。在现有的虚拟机保护逆向分析研究成果中,有专家提出通过动态数据流分析、污点追踪和聚类分析等手段获取字节码语法语义信息。这种方法只能还原部分字节码的语义信息。有专家提出通过逆向虚拟机结构,简化被混淆指令,将虚拟机指令转换中间语言,然后将中间语言编译转换为对应的CPU指令的方法来还原被保护的代码。但是,这种方法要求虚拟机解释器的结构满足特点条件,所以其不具有通用性。有专家提出通过识别被保护软件的API调用,然后抽取出所有影响API参数的指令来近似表示程序的原始代码。这种方法只能得到影响API参数的指令,其并不能有效还原被保护程序语义。
发明内容
本发明实施例提供了一种分析解释例程的虚拟指令方法、装置、设备及存储介质,通过分析每个虚指令解释例程的指令对局部变量区的读次数,对操作数栈的读次数和栈顶的改变值,以实现对虚指令的识别和宽分类目的。
本发明实施例提供了一种分析解释例程的虚拟指令方法,包括:
将虚拟机保护的虚拟指令集进行简化和归类;
简化和归类后分别形成为虚拟加载和存储指令、虚拟运算指令、虚拟退栈指令和虚拟空指令。
进一步的,所述虚拟加载和存储指令涉及到一个变量或常量在局部变量表和操作数栈之间的传递;
所述虚拟运算指令的语义特征是它会去读操作数栈而不改变操作数栈顶;
所述虚拟退栈指令用于直接控制操作数栈,它会将变量从操作数栈出栈从而改变操作数栈顶值,且对局部变量表没有读写操作;
所述虚拟空指令vm_nop,其当操作数栈栈顶变化值为0、操作数栈读写次数为0且局部变量表读次数为0时,判定此解释例程没有执行任何操作。
进一步的,所述虚拟运算指令读操作数栈的次数是和根据算术符需要读操作数的个数一致的。
进一步的,所述简化和归类的方法,包括:以操作数栈栈顶的变化值为主判断依据,然后在其内部再进一步判断其他条件,从而判定该解释例程对应的指令类别。
进一步的,所述所述以操作数栈栈顶的变化值为主判断依据,然后在其内部再进一步判断其他条件,从而判定该解释例程对应的指令类别的方法,包括:
遍历所有的解释例程集合,判断操作数栈变化范围。
如果操作数栈变化范围小于0,则进一步判断局部变量表的读次数,如果大于0,则是Tload指令,等于0则是Tconst指令。
操作数栈变化值如果等于0,则进一步判断操作数栈的读次数,如果大于0,则是Tmath指令,如果等于0则是Tnop指令。
如果操作数栈变化值大于0,则进一步判断局部变量表的读次数,如果大于0,则是Tstore指令,等于0则是Tpop指令。
本发明实施例还提供一种分析解释例程的虚拟指令装置,包括:
简化和归类模块,用于将虚拟机保护的虚拟指令集进行简化和归类;
形成模块,用于简化和归类后分别形成为虚拟加载和存储指令、虚拟运算指令、虚拟退栈指令和虚拟空指令。
本发明实施例还提供一种分析解释例程的虚拟指令设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述分析解释例程的虚拟指令方法。
本发明实施例还提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行所述分析解释例程的虚拟指令方法。
本发明实施例,其方法根据虚拟机解释器的解释例程执行特征,以及对每个虚指令解释例程的指令对局部变量区的读次数、操作数栈的读次数和栈顶的改变值分析,以实现对虚指令的逆向还原,有助于对虚拟机保护的恶意代码的语法和语义分析及检测。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
图1是本发明实施例的所述分析解释例程的虚拟指令方法的整体流程图;
图2是本发明实施例的分析解释例程的虚拟指令装置的结构图。
具体实施方式
下文中将结合附图对本发明的实施例进行详细说明。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
有专家提出通过逆向虚拟机结构,简化被混淆指令,将虚拟机指令转换中间语言,然后将中间语言编译转换为对应的CPU指令的方法来还原被保护的代码。但是,这种方法要求虚拟机解释器的结构满足特点条件,所以其不具有通用性。有专家提出通过识别被保护软件的API调用,然后抽取出所有影响API参数的指令来近似表示程序的原始代码。这种方法只能得到影响API参数的指令,其并不能有效还原被保护程序语义。针对当前分析方法存在的不足,本发明实施例提出一种分析解释例程所对应的虚拟指令方法实现对虚拟机保护破解。
针对上述情况,本发明实施例提出一种分析解释例程的虚拟指令方法,包括:
步骤101,将虚拟机保护的虚拟指令集进行简化和归类。
步骤102,简化和归类后分别形成为虚拟加载和存储指令、虚拟运算指令、虚拟退栈指令和虚拟空指令。
其中,大多数的指令都包含了其所操作的数据类型信息,例如,iload指令用于从局部变量中加载int类型的数据到操作数栈中,对于大部分与数据类型相关的字节码指令来说,它们的操作码助记符中都有特殊的字符来表明该指令作用于那种数据类型,b代表对byte类型的数据操作,s代表short,i代表对int,l代码long,f代表float,d代表double。这里也采用类似的操作码助记符,对于没有助记符的长度以T开头加上对应的长度,比如操作数据的长度为6则用T6作为助记符,从操作数据的字长来判定不同的类型,而对相同字长的具体类型尚难以区分,比如4字节的int和float,8字节的long和double。当操作数栈变化值为-4时,即操作了一个4字节的数据,这里用i作为其助记符,完整表示即为iload。其他指令的表达参考上述助记符。
其中,在一个实施例中,第一类是所述虚拟加载和存储指令,这类指令涉及到一个变量或常量在局部变量表和操作数栈之间的传递;针对这类指令,它的典型特征分别是,vm_load加载指令将一个本地变量加载到操作数栈中,那么意味着对操作数栈会有一个压栈操作,即体现在操作数栈顶变化值为-4或-8,具体的绝对值与压栈变量的长度有关;另外,还会对局部变量区有1次读操作。所以,当分析一个解释例程对操作数栈栈顶的变化值为负数且对局部变量表的读写次数不为0,那么就推导其是一个vm_load加载指令。其中,当操作数栈顶变化之为-4时,为vm_iload表示将一个4字节长度的变量加载到操作数栈中。当操作数栈顶变化之为-8,为vm_lload表示将一个8字节长度的变量加载到操作数栈中。对应的,vm_store存储指令有一个出栈操作,操作数栈的变化值为4或8,且对局部变量区有1次写操作,其中vm_istore表示将一个4字节长度的数值从操作数栈存储到局部变量表中,vm_lstore表示将一个8字节长度的数值从操作数栈存储到局部变量表中。vm_const指令类似vm_load指令,不同的是加载的是常量,所以区别在于对局部变量区没有读写操作。其中,vm_sipush表示将一个2字节的常量加载到操作数栈中,vm_iconst表示4字节的常量加载到操作数栈,vm_lconst表示8字节的常量加载到操作数栈。
第二类指令是所述虚拟运算指令vm_math,虚拟运算指令的语义特征是它会去读操作数栈而不改变操作数栈顶;
在一个实施例中,所述虚拟运算指令读操作数栈的次数是和根据算术符需要读操作数的个数一致的。比如取反指令需要1个操作数,加法指令需要2个操作数,除法指令需要3个操作数。分别使用vm_math1、vm_math2和vm_math3表示有1,2和3个操作数的情况。
第三类指令是所述虚拟退栈指令vm_pop,用于直接控制操作数栈,它会将变量从操作数栈出栈从而改变操作数栈顶值,且对局部变量表没有读写操作;其中,当出栈变量的字长分别为2,4,6,8时,它们对应的指令分别为vm_sipop、vm_ipop、vm_T6pop和vm_dpop。
第四类指令是所述虚拟空指令vm_nop,其当操作数栈栈顶变化值为0、操作数栈读写次数为0且局部变量表读次数为0时,判定此解释例程没有执行任何操作。
对比JAVA虚拟机的虚拟指令分类,本发明实施例重点在于对虚拟加载和存储指令、虚拟算术指令和虚拟操作数栈管理指令的识别,而类型转换指令、对象的创建与操作、方法调用和返回、抛出异常和同步指令涉及到具体的语言语义层面,在做指令类比时,很难假设虚拟机保护也有对等类别的指令集。另外,本发明实施例的算法也未对控制转移指令进行展开逆向分析。
其中,根据如上所述,本发明实施例的方法的伪代码如下所示:
在一个实施例中,所述简化和归类的方法,包括:以操作数栈栈顶的变化值为主判断依据,然后在其内部再进一步判断其他条件,从而判定该解释例程对应的指令类别。
根据解释例程所对应的虚拟指令分析算法的伪代码,其流程如图1所示。
在一个实施例中,所述以操作数栈栈顶的变化值为主判断依据,然后在其内部再进一步判断其他条件,从而判定该解释例程对应的指令类别的方法,包括:
步骤201,遍历所有的解释例程集合,判断操作数栈变化范围。
步骤202,如果操作数栈变化范围小于0,则进一步判断局部变量表的读次数,如果大于0,则是Tload指令,表示将一个本地变量加载到操作数栈中。如果等于0,则是Tconst指令,表示将一个常量加载到操作数栈中。
步骤203,操作数栈变化值如果等于0,则进一步判断操作数栈的读次数,如果大于0,则是Tmath指令,表示一种算数运算指令。如果等于0,则是Tnop指令,表示空操作。
步骤204,如果操作数栈变化值大于0,则进一步判断局部变量表的读次数,如果大于0,则是Tstore指令,表示将一个数值从操作数栈存储到局部变量表中。如果等于0,则是Tpop指令,表示把变量从操作数栈弹出。
本发明实施例的虚拟加载指令逆vm_load和存储虚拟指令vm_istore逆向还原,这类指令涉及到一个变量或常量在局部变量表和操作数栈之间的传递。针对这类指令,它的典型特征分别是,vm_load加载指令将一个本地变量加载到操作数栈中,那么意味着对操作数栈会有一个压栈操作,即体现在操作数栈顶变化值为-4或-8,具体的绝对值与压栈变量的长度有关;另外,还会对局部变量区有1次读操作。所以,当分析一个解释例程对操作数栈栈顶的变化值为负数且对局部变量表的读写次数不为0,那么就推导其是一个vm_load加载指令,其中,当操作数栈顶变化之为-4时,为vm_iload表示将一个4字节长度的变量加载到操作数栈中,当操作数栈顶变化之为-8,为vm_lload表示将一个8字节长度的变量加载到操作数栈中。对应的,vm_store存储指令有一个出栈操作,操作数栈的变化值为4或8,且对局部变量区有1次写操作,其中vm_istore表示将一个4字节长度的数值从操作数栈存储到局部变量表中,vm_lstore表示将一个8字节长度的数值从操作数栈存储到局部变量表中。vm_const指令类似vm_load指令,不同的是加载的是常量,所以区别在于对局部变量区没有读写操作。其中,vm_sipush表示将一个2字节的常量加载到操作数栈中,vm_iconst表示4字节的常量加载到操作数栈,vm_lconst表示8字节的常量加载到操作数栈。
虚拟运算指令vm_math逆向还原,算术指令的语义特征是它会去读操作数栈而不改变操作数栈顶。读的次数根据算术符需要操作数的个数。比如取反指令需要1个操作数,加法指令需要2个操作数,除法指令需要3个操作数。分别使用vm_math1、vm_math2和vm_math3表示有1,2和3个操作数的情况。
虚拟操作数出栈指令vm_pop逆向还原,用于直接控制操作数栈,它会将变量从操作数栈出栈从而改变操作数栈顶值,且对局部变量表没有读写操作。其中,当出栈变量的字长分别为2,4,6,8时,它们对应的指令分别为vm_sipop、vm_ipop、vm_T6pop和vm_dpop。
虚拟空指令vm_nop逆向还原,当操作数栈栈顶变化值为0、操作数栈读写次数为0且局部变量表读次数为0时,判定此解释例程没有执行任何操作。
如图2所示,本发明实施例还提供一种分析解释例程的虚拟指令装置,包括:
简化和归类模块71,用于将虚拟机保护的虚拟指令集进行简化和归类;
形成模块72,用于简化和归类后分别形成为虚拟加载和存储指令、虚拟运算指令、虚拟退栈指令和虚拟空指令。
本发明实施例还提供一种分析解释例程的虚拟指令设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述分析解释例程的虚拟指令方法。
本发明实施例还提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行所述分析解释例程的虚拟指令方法。
在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,ReadOnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号。
Claims (8)
1.一种分析解释例程的虚拟指令方法,其特征在于,包括:
将虚拟机保护的虚拟指令集进行简化和归类;
简化和归类后分别形成为虚拟加载和存储指令、虚拟运算指令、虚拟退栈指令和虚拟空指令。
2.根据权利要求1所述的分析解释例程的虚拟指令方法,其特征在于,所述虚拟加载和存储指令涉及到一个变量或常量在局部变量表和操作数栈之间的传递;
所述虚拟运算指令的语义特征是它会去读操作数栈而不改变操作数栈顶;
所述虚拟退栈指令用于直接控制操作数栈,它会将变量从操作数栈出栈从而改变操作数栈顶值,且对局部变量表没有读写操作;
所述虚拟空指令vm_nop,其当操作数栈栈顶变化值为0、操作数栈读写次数为0且局部变量表读次数为0时,判定此解释例程没有执行任何操作。
3.根据权利要求2所述的分析解释例程的虚拟指令方法,其特征在于,所述虚拟运算指令读操作数栈的次数是和根据算术符需要读操作数的个数一致的。
4.根据权利要求2所述的分析解释例程的虚拟指令方法,其特征在于,所述简化和归类的方法,包括:以操作数栈栈顶的变化值为主判断依据,然后在其内部再进一步判断其他条件,从而判定该解释例程对应的指令类别。
5.根据权利要求2所述的分析解释例程的虚拟指令方法,其特征在于,所述所述以操作数栈栈顶的变化值为主判断依据,然后在其内部再进一步判断其他条件,从而判定该解释例程对应的指令类别的方法,包括:
遍历所有的解释例程集合,判断操作数栈变化范围;
如果操作数栈变化范围小于0,则进一步判断局部变量表的读次数,如果大于0,则是Tload指令,等于0则是Tconst指令;
操作数栈变化值如果等于0,则进一步判断操作数栈的读次数,如果大于0,则是Tmath指令,如果等于0则是Tnop指令;
如果操作数栈变化值大于0,则进一步判断局部变量表的读次数,如果大于0,则是Tstore指令,等于0则是Tpop指令。
6.一种分析解释例程的虚拟指令装置,其特征在于,包括:
简化和归类模块,用于将虚拟机保护的虚拟指令集进行简化和归类;
形成模块,用于简化和归类后分别形成为虚拟加载和存储指令、虚拟运算指令、虚拟退栈指令和虚拟空指令。
7.一种分析解释例程的虚拟指令设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1~5中任意一项所述分析解释例程的虚拟指令方法。
8.一种计算机可读存储介质,其特征在于,存储有计算机可执行指令,所述计算机可执行指令用于执行权利要求1~5中任意一项所述分析解释例程的虚拟指令方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011114571.XA CN112199163B (zh) | 2020-10-16 | 2020-10-16 | 分析解释例程的虚拟指令方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011114571.XA CN112199163B (zh) | 2020-10-16 | 2020-10-16 | 分析解释例程的虚拟指令方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112199163A true CN112199163A (zh) | 2021-01-08 |
CN112199163B CN112199163B (zh) | 2021-12-28 |
Family
ID=74010271
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011114571.XA Active CN112199163B (zh) | 2020-10-16 | 2020-10-16 | 分析解释例程的虚拟指令方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112199163B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116466995A (zh) * | 2023-06-16 | 2023-07-21 | 紫光同芯微电子有限公司 | 基于复合指令的指令及其操作数的优化方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101201883A (zh) * | 2007-09-18 | 2008-06-18 | 北京赛柏科技有限责任公司 | 基于虚拟机的软件保护方法 |
CN101847096A (zh) * | 2010-02-05 | 2010-09-29 | 中国科学院计算技术研究所 | 包含栈变量函数的优化方法 |
CN101976187A (zh) * | 2010-11-16 | 2011-02-16 | 广州迪庆电子科技有限公司 | 反编译过程中的堆栈跟踪方法、装置及反编译器 |
US20150310193A1 (en) * | 2014-04-23 | 2015-10-29 | Nxp B.V. | Control flow flattening for code obfuscation where the next block calculation needs run-time information |
CN105046117A (zh) * | 2015-06-30 | 2015-11-11 | 西北大学 | 一种具有指令集随机化的代码虚拟化软件保护系统 |
CN105975816A (zh) * | 2015-12-25 | 2016-09-28 | 武汉安天信息技术有限责任公司 | 移动终端下基于虚拟技术的代码保护方法及系统 |
CN108664312A (zh) * | 2018-04-04 | 2018-10-16 | 苏州天魂网络科技股份有限公司 | 一种基于虚拟指令集加固的虚拟机保护方法 |
CN109948308A (zh) * | 2019-03-13 | 2019-06-28 | 智者四海(北京)技术有限公司 | 代码安全保护方法、装置、电子设备和计算机可读存储介质 |
-
2020
- 2020-10-16 CN CN202011114571.XA patent/CN112199163B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101201883A (zh) * | 2007-09-18 | 2008-06-18 | 北京赛柏科技有限责任公司 | 基于虚拟机的软件保护方法 |
CN101847096A (zh) * | 2010-02-05 | 2010-09-29 | 中国科学院计算技术研究所 | 包含栈变量函数的优化方法 |
CN101976187A (zh) * | 2010-11-16 | 2011-02-16 | 广州迪庆电子科技有限公司 | 反编译过程中的堆栈跟踪方法、装置及反编译器 |
US20150310193A1 (en) * | 2014-04-23 | 2015-10-29 | Nxp B.V. | Control flow flattening for code obfuscation where the next block calculation needs run-time information |
CN105046117A (zh) * | 2015-06-30 | 2015-11-11 | 西北大学 | 一种具有指令集随机化的代码虚拟化软件保护系统 |
CN105975816A (zh) * | 2015-12-25 | 2016-09-28 | 武汉安天信息技术有限责任公司 | 移动终端下基于虚拟技术的代码保护方法及系统 |
CN108664312A (zh) * | 2018-04-04 | 2018-10-16 | 苏州天魂网络科技股份有限公司 | 一种基于虚拟指令集加固的虚拟机保护方法 |
CN109948308A (zh) * | 2019-03-13 | 2019-06-28 | 智者四海(北京)技术有限公司 | 代码安全保护方法、装置、电子设备和计算机可读存储介质 |
Non-Patent Citations (2)
Title |
---|
任武: "《面向需求及设计的逆向工程关键技术研究》", 《万方》 * |
周晓宇: "《基于静态语义分析的设计模式与用例识别》", 《万方》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116466995A (zh) * | 2023-06-16 | 2023-07-21 | 紫光同芯微电子有限公司 | 基于复合指令的指令及其操作数的优化方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112199163B (zh) | 2021-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7316007B2 (en) | Optimization of n-base typed arithmetic expressions | |
CN111381938B (zh) | 一种基于基础指令集执行区块链中智能合约的方法及系统 | |
US10102373B2 (en) | Method and apparatus for capturing operation in a container-based virtualization system | |
EP1063585A2 (en) | Operation code encoding | |
US8327439B2 (en) | System, method and computer program product for identifying functions in computer code that control a behavior thereof when executed | |
US11893106B2 (en) | Apparatus and method for generating system call whitelist of application container and method for controlling system call of application container | |
US20050022172A1 (en) | Buffer overflow protection and prevention | |
US7020874B2 (en) | Techniques for loading class files into virtual machines | |
CN113360910A (zh) | 恶意应用的检测方法、装置、服务器和可读存储介质 | |
CN112199163B (zh) | 分析解释例程的虚拟指令方法、装置、设备及存储介质 | |
GB2603444A (en) | Enhancing memory safe programming using page frame tag mechanism | |
US7051323B2 (en) | Method and apparatus for initializing romized system classes at virtual machine build time | |
CN113176926B (zh) | 一种基于虚拟机自省技术的api动态监控方法及系统 | |
US8707424B2 (en) | Method for making secure execution of a computer programme, in particular in a smart card | |
US6804681B2 (en) | Identifying and tracking object references in a java programming environment | |
US7065747B2 (en) | Identifying references to objects during bytecode verification | |
CN105573814A (zh) | 一种java卡局部变量字节码采用芯片硬件解析执行的方法 | |
CN112199116B (zh) | 操作数栈寄存器识别方法、装置、设备及存储介质 | |
KR20220043023A (ko) | 멜트다운 취약점을 이용한 인공신경망 추출 방법 | |
US6934726B2 (en) | Storing and retrieving of field descriptors in Java computing environments | |
CN112199159B (zh) | 对操作数栈和变量表的读写方法、装置、设备及存储介质 | |
CN112199160B (zh) | 虚拟指令还原方法、装置、设备及存储介质 | |
US20230057138A1 (en) | Apparatus and method for identifying abnormal processor and computer-readable storage medium | |
KR102445428B1 (ko) | 난독화된 악성 매크로 탐지 장치 및 방법 | |
KR20230096659A (ko) | ResNet을 지원하는 BNN 하드웨어 구조를 위한 데이터 처리 시스템 및 방법 |
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 |