CN113778838B - 二进制程序动态污点分析方法及装置 - Google Patents

二进制程序动态污点分析方法及装置 Download PDF

Info

Publication number
CN113778838B
CN113778838B CN202010520207.7A CN202010520207A CN113778838B CN 113778838 B CN113778838 B CN 113778838B CN 202010520207 A CN202010520207 A CN 202010520207A CN 113778838 B CN113778838 B CN 113778838B
Authority
CN
China
Prior art keywords
program
analysis
dynamic
target program
system call
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.)
Active
Application number
CN202010520207.7A
Other languages
English (en)
Other versions
CN113778838A (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.)
China Telecom Corp Ltd
Original Assignee
China Telecom Corp 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 China Telecom Corp Ltd filed Critical China Telecom Corp Ltd
Priority to CN202010520207.7A priority Critical patent/CN113778838B/zh
Publication of CN113778838A publication Critical patent/CN113778838A/zh
Application granted granted Critical
Publication of CN113778838B publication Critical patent/CN113778838B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供一种二进制程序动态污点分析方法及装置。一种二进制程序动态污点分析方法,对基于容器运行的二进制程序进行动态污点分析,所述二进制程序动态污点分析方法包括:插桩步骤,插桩操作系统的系统调用;获取步骤,通过所插桩的所述系统调用来获取在容器内运行的目标程序的信息;加载步骤,基于所述目标程序的信息,将动态二进制程序分析框架Pin加载到所述目标程序;以及分析步骤,基于所述Pin,对所述目标程序进行动态污点分析。

Description

二进制程序动态污点分析方法及装置
技术领域
本发明涉及对二进制程序进行动态污点分析的技术,特别涉及一种对基于容器运行的二进制程序进行动态污点分析的技术。
背景技术
污点分析是动态程序分析的关键技术,广泛应用于恶意程序分析、软件测试等领域。
现有的二进制程序动态污点分析方法包括如下步骤:在步骤S1中,基于动态二进制程序分析框架(Pin),对主存和寄存器中来自外部渠道的输入进行识别并将其作为可疑污染源加以标记;在步骤S2中,通过中间指令层实现可疑污染源传播行为的跟踪,根据各指令操作数的污点状态对污点行为进行分析;在步骤S3中,建立内存模型和寄存器模型记录每个主存字节和寄存器字节的污点状态(参照专利文献:申请公布号CN107526970A)。
Pin是Intel开发的动态二进制程序分析框架,支持对x86架构上运行的二进制程序进行动态分析。
容器是轻量级的虚拟化技术,在云计算的趋势下得到愈来愈广泛的应用。然而由于容器对运行在其内的程序进行了隔离,Pin并不支持对基于容器运行的二进制程序进行动态污点分析,同时Pin也不能在容器中运行来对在容器内运行的目标程序进行分析。
发明内容
有鉴于此,本发明的目的在于提供一种对基于容器运行的二进制程序进行动态污点分析的方法及装置。
根据本发明的一个方面,提供一种二进制程序动态污点分析方法,对基于容器运行的二进制程序进行动态污点分析,所述二进制程序动态污点分析方法包括:
插桩步骤,插桩操作系统的系统调用;
获取步骤,通过所插桩的所述系统调用来获取在容器内运行的目标程序的信息;
加载步骤,基于所述目标程序的信息,将动态二进制程序分析框架Pin加载到所述目标程序;以及
分析步骤,基于所述Pin,对所述目标程序进行动态污点分析。
优选地,在所述插桩步骤中,插桩包括所述系统调用和用于获取所述系统调用的返回值的代码的定制代码。
优选地,在所述插桩步骤中,将系统调用表中的原有的系统调用替换为所述定制代码。
优选地,在所述插桩步骤中,所述定制代码作为内核模块动态地加载到操作系统内核。
优选地,在所述插桩步骤中,在所述系统调用中指定用于获取所述目标程序的信息的参数。
优选地,在所述获取步骤中,当所述目标程序在容器内运行时,所述定制代码被执行,并根据用于获取所述系统调用的返回值的代码的执行结果获取所述目标程序的信息。
优选地,所述系统调用包括:关于命名空间的系统调用。
优选地,在所述获取步骤中,获取所述目标程序在操作系统内的全局进程号,在所述加载步骤中,根据所述目标程序的全局进程号,将Pin加载到所述目标程序。
优选地,在所述获取步骤中,还获取所述目标程序的虚拟以太网设备,在所述分析步骤中,根据所述虚拟以太网设备,将从该虚拟以太网设备输入的数据标识为污点数据来进行动态污点分析。
优选地,在所述分析步骤中,在所述目标程序中插桩read系统调用,将从磁盘读取的数据标识为污点数据来进行动态污点分析。
根据本发明的另一方面,提供一种二进制程序动态污点分析装置,包括:
插桩单元,插桩操作系统的系统调用;
获取单元,通过所插桩的所述系统调用来获取在容器内运行的目标程序的信息;
加载单元,基于所述目标程序的信息,将动态二进制程序分析框架Pin加载到所述目标程序;以及
分析单元,基于所述Pin,对所述目标程序进行动态污点分析。
根据本发明的又一方面提供一种计算机可读存储介质,其上存储有计算机程序指令,该程序被处理器执行时实现上述二进制程序动态污点分析方法。
本发明通过插桩操作系统的系统调用来获取在容器内运行的目标程序的信息,并基于获取的所述目标程序的信息,将Pin加载到所述目标程序,进而实现基于Pin对所述目标程序进行动态污点分析,从而本发明能够基于Pin对基于容器运行的不限于编程语言的二进制程序进行动态污点分析,极大拓展了动态污点程序分析工具的边界,这是现有的动态程序分析框架不具备的。
附图说明
图1是通过Namespace实现容器功能的示意图。
图2是示出本发明实施方式的对基于容器运行的二进制程序进行动态污点分析的流程图。
图3是示出本发明实施方式的二进制程序动态污点分析装置的框图。
具体实施方式
下面参照附图对本发明进行更全面的描述,其中说明本发明的示例性实施例。
LXC为Linux Container(Linux容器)的简写,是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源。LXC包括Namespace(命名空间)、Cgroup等。LinuxNamespace机制提供一种资源隔离方案。Namespace将内核的全局资源做封装,使得每个Namespace都有一份独立的资源,因此不同的进程在各自的Namespace内对同一种资源的使用互不干扰。Cgroup是Control group的简称,是Linux内核提供的一个特性,用于限制和隔离一组进程对系统资源的使用。图1为通过Namespace实现容器功能的示意图。
目前Linux内核的Namespace提供了如下表1所示的6种隔离能力:
表1:
Linux对Namespace的实现主要是通过clone(),setns()、unshare()这3个系统调用来完成的。为了确定隔离的到底是哪项Namespace,在使用这些系统调用时,通常需要指定一些调用参数,例如CLONE_NEWIPC、CLONE_NEWNET、CLONE_NEWNS、CLONE_NEWPID、CLONE_NEWUSER、CLONE_NEWUTS和CLONE_NEWCGROUP。
例如,在运行系统调用clone()时,指定参数CLONE_NEWPID,创建子进程,该子进程在新的Namespace中运行,当clone()运行完成时,返回该子进程的全局进程号。运行系统调用clone()时的指令代码例如如下:
child_pid=clone(childFunc,*,CLONE_NEWPID|SIGCHLD,NULL);
clone(),setns()、unshare()这3个系统调用的具体使用方式是现有技术,在此省略其详细说明。
下面说明本发明的基于Linux容器运行的二进制程序进行动态污点分析的实施方式。
图2示出本发明实施方式的对基于容器运行的二进制程序进行动态污点分析的流程图。
在步骤S101中,插桩操作系统的系统调用。
在本实施方式中,以Linux操作系统为例进行说明,操作系统的系统调用可以包括:Linux内核中关于Namespace实现的系统调用,即clone()、setns()、unshare()这三个系统调用。
为了通过所插桩的系统调用来获取目标程序的信息,在插桩系统调用时,可以通过插入用于获取系统调用的返回值的代码来获取系统调用的返回值。另外,可以根据需要获取的目标程序的信息,在系统调用中指定相应的参数。
作为插桩系统调用的方式,可以采用如下方式:编写定制代码,该定制代码中包括系统调用和用于获取系统调用的返回值的代码。然后修改系统调用表,将系统调用表中的原有的系统调用替换为上述定制代码。这样,当目标程序启动时,重新编译Linux内核,并加载此内核来执行上述定制代码,这时,定制代码中的系统调用被执行,用于获取系统调用的返回值的代码被执行而能够得到系统调用的返回值。
作为修改系统调用表的替代方式,上述定制代码也可以以Linux内核模块(LinuxKernel Module)的方式编写,并根据需要加载或卸载该定制代码。例如当需要获取目标程序的信息时,将该定制代码加载到Linux内核运行,例如不需要获取目标程序的信息时,从Linux内核卸载该定制代码。通过这种方式,可以实现动态加载和卸载定制代码的功能。
在本实施方式中,只要通过插桩系统调用能够获取到在容器内运行的目标程序的信息,则插桩系统调用的方式不限于上述方式。
在步骤S102中,通过所插桩的所述系统调用来获取在容器内运行的目标程序的信息。其中,目标程序是要进行动态污点分析的二进制程序。当容器内的目标程序启动时,在上述步骤S101中插桩的系统调用被执行,根据系统调用的返回值能够获取目标程序的信息。
在本实施方式中,能够获取的目标程序的信息可以包括:
所述目标程序的全局进程号(PID);
在所述目标程序所在的容器的命名空间号中生成的虚拟以太网设备(Network);
所述目标程序所在的容器内的用户ID和用户组ID(User);
所述目标程序所在的容器内的主机名和域名(UTS)。
能够获取的目标程序的信息不限于上述列举的信息,可以根据动态污点分析要求进行增减。作为一个实施例,根据需要获取的信息,在步骤S101中插桩系统调用时指定相应的参数即可。
在此,对目标程序的进程号进行说明。由于容器的隔离,一个基于容器运行的程序被赋予了多个进程号,一个是在容器内的进程号,可以称为局部或本地进程号;一个是基于操作系统的进程号,可以称为全局进程号。由于容器的隔离,在容器内部读取的目标程序的进程号只是本地进程号。本发明通过插桩与Namespace相关的系统调用,可以获取目标程序在操作系统中的全局进程号。
在步骤S103中,基于在所述步骤S102中获取的所述目标程序的信息,将动态二进制程序分析框架(Pin)加载到所述目标程序。
作为将Pin加载到所述目标程序的实现方式,例如,可以根据获取的所述目标程序的全局进程号,将Pin加载到所述目标程序。
例如,将Pin加载到所述目标程序的命令可以为pin–pid<全局进程号>。其中,Pin是Intel提供的动态程序分析框架二进制文件,pid是目标程序的全局进程号。
在本实施方式中,通过步骤S101和S102获取到了目标程序在操作系统中的全局进程号,因此虽然目标程序在操作系统中被容器所隔离,但基于目标程序在操作系统中的全局进程号,Pin可以被加载到在容器内运行的目标程序。
另外,作为另一实施例,在步骤S102中也可以获取所述目标程序所在的容器的命名空间号和所述目标程序在容器内的局部进程号而不获取目标程序的全局进程号,并根据所述目标程序所在的容器的命名空间号和所述目标程序在容器内的局部进程号,将Pin加载到所述目标进程。
在步骤S104中,基于所述Pin,对所述目标程序进行动态污点分析。
Pin被加载到目标程序之后,基于Pin进行目标程序的动态污点分析的方法可以采用现有的任何方式。
下面以插桩系统调用clone()来获取容器中的目标程序的全局进程号为例子,说明获取容器内的目标程序的信息的方法。为了得到目标进程的全局进程号,例如可以插桩系统调用clone(),获取clone()的返回值即可得到目标进程的全局进程号,具体如下:
编写定制的clone()系统调用代码。编写的定制代码可以包括原clone()代码和用于获取clone()的返回值的代码。作为获取clone()的返回值的代码,由于返回值通常保存在eax寄存器中,所以例如利用printk()函数,通过printk()函数将clone()的返回值打印出来。作为编写的定制代码的例子,可以将定制代码新命名为custom_clone(),custom_clone()如下:
编写定制代码之后,修改系统调用表(system call table),将原clone()函数替换为上述编写的定制代码,在本例子中替换为custom_clone()函数。修改系统调用表的指令如下:
original_call=sys_call_table[__NR_clone];
sys_call_table[__NR_clone]=custom_clone;
通过上述指令,在系统调用表中,将原clone()函数替换为custom_clone()函数。
重新编译Linux内核,并加载此内核,这样当基于容器运行的目标程序启动时,按照上述修改后的系统调用表执行custom_clone()函数,获取到该目标程序的全局进程号。
另外,如上说明,也可以把上述定制代码以Linux Kernel Module的方式编写,实现动态加载/卸载此功能。
另外,按照同样的方法,通过插桩与Namespace相关的setns()或unshare()系统调用,也能够获取目标程序的全局进程号,在此不进行详细说明。根据应用场景选用合适的系统调用来获取需要的信息即可。
另外,通过插桩系统调用获取目标程序的其它信息的方法也可以采用同样的方法,在此不进行详细说明。
下面,说明基于Pin对在容器内运行的目标程序进行动态污点分析的具体例子。例如,可以通过插桩系统调用来获取目标程序的虚拟以太网设备,根据所获取的所述虚拟以太网设备,将从该虚拟以太网设备输入的数据标识为污点数据来进行动态污点分析。作为另一例,还可以在所述目标程序中插桩read系统调用,将从磁盘读取的数据标识为污点数据来进行动态污点分析。
例如,在获取到容器内的目标程序的全局进程号之后,需要编写、编译相应的pintool模块,以实现对目标程序具体的污点分析功能,其中pintool是基于Pin提供的API编写的分析模块。
编写pintool实现对目标程序的污点数据流追踪的例子如下:
1)pin提供了插桩目标程序运行系统调用时的API:
·LEVEL_PINCLIENT::SYSCALL_ENTRY_CALLBACK
·LEVEL_PINCLIENT::SYSCALL_EXIT_CALLBACK
其中前者是在目标程序开始系统调用时插桩,后者是在系统调用完成时插桩。
使用API获取目标程序运行系统调用时的调用号,当调用号为read系统调用时:
PIN_GetSyscallNumber(ctx,std)==__NR_read,获取read系统调用的第2、3个参数,得到输入数据读取到内存的地址空间范围,并标注为污点数据。
目标程序继续运行时会对输入数据进行处理,例如使用load/store等指令将输入数据读进寄存器,或存放到其它内存空间地址。
2)pin同样提供了针对指令(instruction)级别的插桩API:
LEVEL_PINCLIENT::INS_INSTRUMENT_CALLBACK
使用提供的API编写pintool代码,追踪load/store等指令的运行,原则是如果指令的输入数据被标记为污点数据,那么输出数据同样被标记为污点数据。
基于1)和2)及其它需要步骤编写、编译pintool,并在分析时使用命令加载:pin–tpintool–pid<全局进程号>,就可以实现对容器中的目标程序的污点数据流追踪。另外,需要说明的是,可以通过pin–t pintool–pid<全局进程号>这样的命令同时实现上述步骤S103中的Pin向目标程序的加载和上述步骤S104中的基于Pin的对目标程序的分析。
本发明不限于以上举出的动态污点分析例子,基于Pin进行动态污点分析的方法可以采用现有的技术,在此不进行详细说明。
图3是示出本发明实施方式的二进制程序动态污点分析装置的框图。如图3所示,本发明实施方式的二进制程序动态污点分析装置包括:插桩单元201,插桩操作系统的系统调用;获取单元202,通过所插桩的所述系统调用来获取在容器内运行的目标程序的信息;加载单元203,基于所述目标程序的信息,将动态二进制程序分析框架Pin加载到所述目标程序;分析单元204,基于所述Pin,对所述目标程序进行动态污点分析。本发明实施方式的二进制程序动态污点分析装置可以通过处理电路来实现,插桩单元201、获取单元202、加载单元203、分析单元204等各个单元仅是根据所实现的具体功能所划分的逻辑模块,而不是用于限制具体的实现方式。在实际实现时,上述各个单元可被实现为独立的物理实体,或者也可以由单个实体(例如,处理器(CPU或DSP等)、集成电路等)来实现。
在另一些实施例中,一种计算机可读存储介质,其上存储有计算机程序指令,该指令被处理器执行时实现图2所对应实施方式中的方法的步骤。本领域内的技术人员应明白,本公开的实施例可提供为方法、装置、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
在以上实施方式中,给出了以基于Linux操作系统的Linux容器技术为例,说明了对基于容器运行的二进制程序进行动态污点分析的方法,但本发明不限于此,在Windows和MacOS等其它操作系统中基于容器运行的二进制程序也能够应用本发明实施方式的二进制程序动态污点分析方法。Windows和MacOS是商业软件、非开源操作系统,但是也同样使用类似的系统调用机制,也提供了相应的系统调用。因此,在其它操作系统中,也同样能够应用本发明实施方式的二进制程序动态污点分析方法。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (9)

1.一种二进制程序动态污点分析方法,对基于容器运行的二进制程序进行动态污点分析,所述二进制程序动态污点分析方法包括:
插桩步骤,插桩包括关于容器命名空间的系统调用和用于获取所述系统调用的返回值的代码的定制代码;
获取步骤,当目标程序在容器内运行时,所述定制代码被执行,并根据用于获取所述系统调用的返回值的代码的执行结果获取所述目标程序的信息;
加载步骤,基于所述目标程序的信息,将动态二进制程序分析框架Pin加载到所述目标程序;以及
分析步骤,基于所述Pin,对所述目标程序进行动态污点分析。
2.根据权利要求1所述的二进制程序动态污点分析方法,其特征在于,
在所述插桩步骤中,将系统调用表中的原有的系统调用替换为所述定制代码。
3.根据权利要求1所述的二进制程序动态污点分析方法,其特征在于,
在所述插桩步骤中,所述定制代码作为内核模块动态地加载到操作系统内核。
4.根据权利要求1~3中的任一项所述的二进制程序动态污点分析方法,其特征在于,
在所述插桩步骤中,在所述系统调用中指定用于获取所述目标程序的信息的参数。
5.根据权利要求1~3中的任一项所述的二进制程序动态污点分析方法,其特征在于,
在所述获取步骤中,获取所述目标程序在操作系统内的全局进程号,
在所述加载步骤中,根据所述目标程序的全局进程号,将Pin加载到所述目标程序。
6.根据权利要求5所述的二进制程序动态污点分析方法,其特征在于,
在所述获取步骤中,还获取所述目标程序的虚拟以太网设备,
在所述分析步骤中,根据所述虚拟以太网设备,将从该虚拟以太网设备输入的数据标识为污点数据来进行动态污点分析。
7.根据权利要求5所述的二进制程序动态污点分析方法,其特征在于,
在所述分析步骤中,在所述目标程序中插桩read系统调用,将从磁盘读取的数据标识为污点数据来进行动态污点分析。
8.一种二进制程序动态污点分析装置,包括:
插桩单元,插桩包括关于容器命名空间的系统调用和用于获取所述系统调用的返回值的代码的定制代码;
获取单元,当目标程序在容器内运行时,所述定制代码被执行,并根据用于获取所述系统调用的返回值的代码的执行结果获取所述目标程序的信息;
加载单元,基于所述目标程序的信息,将动态二进制程序分析框架Pin加载到所述目标程序;以及
分析单元,基于所述Pin,对所述目标程序进行动态污点分析。
9.一种计算机可读存储介质,其上存储有计算机程序指令,该程序被处理器执行时实现权利要求1~7中的任一项所述的二进制程序动态污点分析方法。
CN202010520207.7A 2020-06-09 2020-06-09 二进制程序动态污点分析方法及装置 Active CN113778838B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010520207.7A CN113778838B (zh) 2020-06-09 2020-06-09 二进制程序动态污点分析方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010520207.7A CN113778838B (zh) 2020-06-09 2020-06-09 二进制程序动态污点分析方法及装置

Publications (2)

Publication Number Publication Date
CN113778838A CN113778838A (zh) 2021-12-10
CN113778838B true CN113778838B (zh) 2024-01-26

Family

ID=78834477

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010520207.7A Active CN113778838B (zh) 2020-06-09 2020-06-09 二进制程序动态污点分析方法及装置

Country Status (1)

Country Link
CN (1) CN113778838B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114238153B (zh) * 2022-02-21 2022-07-08 麒麟软件有限公司 一种Linux系统中二进制文件检测方法
CN115629996B (zh) * 2022-12-21 2023-03-10 深圳市微克科技有限公司 一种嵌入式软件自动化测试方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103177210A (zh) * 2013-04-02 2013-06-26 中国人民大学 一种在Android中植入动态污点分析模块的方法
CN103440201A (zh) * 2013-09-05 2013-12-11 北京邮电大学 动态污点分析装置及其在文件格式逆向解析中的应用
CN107526970A (zh) * 2017-08-24 2017-12-29 安徽大学 基于动态二进制平台检测运行时程序漏洞的方法
CN109697163A (zh) * 2018-12-14 2019-04-30 西安四叶草信息技术有限公司 程序测试方法及设备
CN110647748A (zh) * 2019-09-10 2020-01-03 北京理工大学 一种基于硬件特性的代码复用攻击检测系统及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8893280B2 (en) * 2009-12-15 2014-11-18 Intel Corporation Sensitive data tracking using dynamic taint analysis

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103177210A (zh) * 2013-04-02 2013-06-26 中国人民大学 一种在Android中植入动态污点分析模块的方法
CN103440201A (zh) * 2013-09-05 2013-12-11 北京邮电大学 动态污点分析装置及其在文件格式逆向解析中的应用
CN107526970A (zh) * 2017-08-24 2017-12-29 安徽大学 基于动态二进制平台检测运行时程序漏洞的方法
CN109697163A (zh) * 2018-12-14 2019-04-30 西安四叶草信息技术有限公司 程序测试方法及设备
CN110647748A (zh) * 2019-09-10 2020-01-03 北京理工大学 一种基于硬件特性的代码复用攻击检测系统及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
PEMU: A PIN Highly Compatible Out-of-VM Dynamic Binary Instrumentation Framework;Junyuan Zeng等;《Proceedings of the 11th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments》;摘要,第147页第1节,第150-155页第2.4节、第3-5.2节,图3、5、6 *

Also Published As

Publication number Publication date
CN113778838A (zh) 2021-12-10

Similar Documents

Publication Publication Date Title
US9274923B2 (en) System and method for stack crawl testing and caching
US7392514B2 (en) Data flow chasing
CN110287702B (zh) 一种二进制漏洞克隆检测方法及装置
JP5523872B2 (ja) プログラムの動的分析方法及びその装置
US8261242B2 (en) Assisting debug memory tracing using an instruction array that tracks the addresses of instructions modifying user specified objects
US8141056B2 (en) Just-in-time dynamic instrumentation
US9495136B2 (en) Using aliasing information for dynamic binary optimization
US20090172664A1 (en) Adding a profiling agent to a virtual machine to permit performance and memory consumption analysis within unit tests
US7389494B1 (en) Mechanism for statically defined trace points with minimal disabled probe effect
US10614227B2 (en) Method and system for identifying functional attributes that change the intended operation of a compiled binary extracted from a target system
CN113778838B (zh) 二进制程序动态污点分析方法及装置
US7523446B2 (en) User-space return probes
US6901583B1 (en) Method for testing of a software emulator while executing the software emulator on a target machine architecture
US20200143061A1 (en) Method and apparatus for tracking location of input data that causes binary vulnerability
CN111897711B (zh) 代码中bug的定位方法、装置、电子设备及可读存储介质
US20080307397A1 (en) Program Analysis by Partial Emulation
CN111638911A (zh) 一种处理器、指令执行设备及方法
US20030079210A1 (en) Integrated register allocator in a compiler
US7065754B1 (en) Method and apparatus for switching between multiple implementations of a routine
US20080034349A1 (en) Incremental program modification based on usage data
US20060253271A1 (en) Method for facilitating transformation of multi-threaded process-oriented object code to event-based object code
US11449317B2 (en) Detection of semantic equivalence of program source codes
JP2016029547A (ja) 実行モジュール生成装置、及び電子制御装置
CN116501385B (zh) 指令处理方法、处理器、芯片及计算机设备
KR101225577B1 (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