CN114238153A - 一种Linux系统中二进制文件检测方法 - Google Patents

一种Linux系统中二进制文件检测方法 Download PDF

Info

Publication number
CN114238153A
CN114238153A CN202210154256.2A CN202210154256A CN114238153A CN 114238153 A CN114238153 A CN 114238153A CN 202210154256 A CN202210154256 A CN 202210154256A CN 114238153 A CN114238153 A CN 114238153A
Authority
CN
China
Prior art keywords
binary file
system call
binary
file
library
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
CN202210154256.2A
Other languages
English (en)
Other versions
CN114238153B (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.)
Kirin Software Co Ltd
Original Assignee
Kirin Software 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 Kirin Software Co Ltd filed Critical Kirin Software Co Ltd
Priority to CN202210154256.2A priority Critical patent/CN114238153B/zh
Publication of CN114238153A publication Critical patent/CN114238153A/zh
Application granted granted Critical
Publication of CN114238153B publication Critical patent/CN114238153B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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

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)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及计算机科学技术领域,具体涉及一种Linux系统中二进制文件检测方法,包括如下步骤:S1、在Linux系统中获取待检测的二进制文件;S2、判断所述二进制文件是否正确访问系统调用,若正确,则所述二进制文件正常,若不正确,则所述二进制文件异常。该方法可以避免二进制代码不规范使用系统调用。

Description

一种Linux系统中二进制文件检测方法
技术领域
本发明涉及计算机科学技术领域,具体涉及一种Linux系统中二进制文件检测方法。
背景技术
代码审查是指通过工具或人工对软件代码的安全性、合规性、可维护性、可理解性等方面进行审计、检查。最大限度消除软件代码中的bug、漏洞及其它安全隐患,保证软件代码的编写符合标准规范,提高软件的可读性、可移植性等。
应用程序代码审查根据代码来源,可分为:
(1)根据业务需要新编写的应用软件代码:针对该类代码的审查,审查的目的保证新编写代码的合规性、安全性、完整性等。
(2)应用软件调用的第三方依赖库的代码:针对该类代码的审查,主要内容是根据权威的漏洞数据库,对标准依赖库进行扫描,发现是否存在已知的易受攻击的漏洞,是否打上了对应的漏洞补丁。
应用程序代码审查根据审查的目的,可分为:
1)代码的安全性审查:通过分析代码中的运行时逻辑关系,识别并修复代码中的各种可能影响系统安全的潜在漏洞或后门,降低软件的运行风险。
2)代码的完整性检查:审查代码是否完全按照设计文档的功能需求,进行了数据库的创建、初始化,是否存在任何没有定义或没有引用到的变量、常数或数据类型,是否有代码注释等。
3)代码的一致性检查:代码的执行逻辑、变量的定义和使用、参数个数、代码格式、符号、结构等风格是否与设计文档一致。
4)代码的健壮性检查:代码是否采取了避免出现运行时错误,包含数组边界溢出、被零除、值越界、堆栈溢出等问题的机制。
5)代码的可验证性检查:代码中是否包含了便于测试调试的机制。
根据审查的方法,可分为:
1)人工审查:由软件开发人员,一行一行对代码进行阅读审查。人工代码审查虽然效果较好,但是效率低下。
2)工具审查:当前的应用软件往往代码量巨大,完全靠人工代码审查效率低下,因此,往往借助代码审查工具对代码进行自动化的检查。
根据审查的代码形态,可分为:
1)源代码审查:是对编写的软件原始代码进行审查。
2)二进制代码审查:是对编译后的二进制文件进行审查。
Linux操作系统的体系架构分为用户空间和内核空间。内核是控制计算机硬件资源的软件,为上层应用程序提供运行环境。用户空间中应用程序的执行必须依托于内核提供的资源,包括CPU资源、存储资源、I/O资源等。但是这些资源是有限的,如果访问资源的操作过多,又不对这些操作加以区分,可能会造成资源访问的冲突。因此,Linux系统对不同的操作赋予了不同的权限,即内核空间的进程可以执行任何操作,使用系统资源也没有限制。用户空间的进程如果需要使用系统资源,需要从用户态切换到内核态才可以使用内核提供的系统资源。因此,为了使用户空间进程能够使用内核提供的系统资源,内核为用户空间提供了标准的访问接口:即系统调用。在Linux中,系统调用是用户空间访问内核的主要手段,除异常和陷入外,它们是内核唯一的合法入口,原因有:
1)用户空间进程不能直接执行内核代码、或直接调用内核空间中的函数,原因是为了避免应用程序不正确的使用硬件设备,例如内核驻留在受保护的地址空间,如果用户空间进程直接在内核地址空间上读写,会严重影响系统的安全性和稳定性。因此,必须通过系统调用才能访问内核资源。
2)系统调用为用户空间提供了硬件的抽象接口,屏蔽了底层硬件资源的具体属性,开发者可以透明的使用系统资源,不需要关心底层存储介质和文件系统的类型。
3)用户空间进程通过系统调用访问内核资源,可以避免应用程序随意访问底层硬件而内核又一无所知的情况,这样不利于实现多任务的调度和虚拟内存的管理。
另外,对于应用开发者来说,直接通过系统调用访问内核资源非常繁琐,为了降低开发者的成本,Linux系统集成了库函数和Shell,这些库函数和Shell实现了对系统调用的封装,将简单的业务逻辑接口呈现给用户,方便开发者调用,增强了程序设计的灵活性。
因此,良好的、规范的程序执行流程是:用户空间代码—>库函数—>系统调用—>传递系统调用号和参数—>执行正确的系统调用函数—>把返回值传递回用户空间。
在Linux系统中,不规范使用系统调用会造成的诸多问题,例如程序可能存在安全漏洞、移植性差、可维护性差等。
因此,有必要提供一种检测方法,对二进制文件进行检测,避免二进制文件不规范使用系统调用而带来系统漏洞。
发明内容
解决的技术问题
针对现有技术所存在的上述缺点,本发明提供了一种Linux系统中二进制文件检测方法,该方法可以对编译后的二进制文件进行检测,避免二进制文件错误使用系统调用而带来安全问题。
技术方案
为实现以上目的,本发明通过以下技术方案予以实现:
本发明提供了一种Linux系统中二进制文件检测方法,包括如下步骤:S1、在Linux系统中获取待检测的二进制文件;S2、判断所述二进制文件是否正确访问系统调用,若正确,则所述二进制文件正常,若不正确,则所述二进制文件异常。
进一步地,判断所述二进制文件的库文件是否为最新版本,若是,则判定所述二进制文件为正确访问系统调用,若否,则判定为不正确。
进一步地,所述判断所述二进制文件的库文件是否为最新版本,具体包括:
采用哈希算法,使所述Linux系统中每个glibc库文件都生成一个哈希值,综合每一个哈希值生成一个哈希值集合B;
获取所述二进制文件依赖的所有库文件,采用哈希算法计算每一个库文件的哈希值并综合生成一个哈希值集合A;
若所述哈希值集合A是所述哈希值集合B的真子集,则判定所述二进制文件的库文件是最新版本,若所述哈希值集合A是所述哈希值集合B的非真子集,则判定不是。
进一步地,判断所述二进制文件是否通过syscall直接访问系统调用,若否,则判定所述二进制文件为正确访问系统调用,若是,则判定为不正确。
进一步地,所述判断所述二进制文件是否通过syscall直接访问系统调用,具体包括:
获取所述二进制文件所有的库函数,若所述所有的库函数中包括syscall库函数,则判定所述二进制文件通过syscall直接访问系统调用,若不包括,则判定未通过。
进一步地,判断所述二进制文件是否通过汇编指令直接访问系统调用,若否,则判定所述二进制文件为正确访问系统调用,若是,则判定为不正确。
进一步地,所述判断所述二进制文件是否通过汇编指令直接访问系统调用,具体包括:
获取所述二进制文件中的反汇编代码A,若所述反汇编代码A中不存在汇编指令B,则判定所述二进制文件未通过汇编指令直接访问系统调用,若存在,则判定通过,其中,所述汇编指令B为mov $0x14,$eax int $0x80。
进一步地,判断所述二进制文件中是否新增了系统调用,若否,则判定所述二进制文件为正确访问系统调用,若是,则判定为不正确。
进一步地,所述判断所述二进制文件中是否新增了系统调用,具体包括:
获取所述二进制文件调用的所有系统调用,得到系统调用列表A;
获取所述Linux系统内核支持的所有系统调用,得到系统调用列表B;
若所述系统调用列表A是所述系统调用列表B的真子集,则判定所述二进制文件中没有新增系统调用,若所述系统调用列表A是所述系统调用列表B的非真子集,则判定有新增系统调用。
有益效果
本发明提供的方法针对二进制文件错误使用系统调用从而产生安全问题的情况,对应生成了一种检测方法,若检测到二进制文件错误访问系统调用,则判断该二进制文件异常,及时进行处理,防止后续带来安全隐患。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的Linux系统中二进制文件检测方法步骤示意图;
图2为本发明一实施例提供的Linux系统中二进制文件检测方法的一个判断示意图;
图3为本发明一实施例提供的Linux系统中二进制文件检测方法的另一个判断示意图;
图4为本发明一实施例提供的Linux系统中二进制文件检测方法的又一个判断示意图;
图5为本发明一实施例提供的Linux系统中二进制文件检测方法的再一个判断示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参阅图1,本发明一实施例提供了一种Linux系统中二进制文件检测方法,其特征在于,包括如下步骤:
S1、在Linux系统中获取待检测的二进制文件;
S2、判断所述二进制文件是否正确访问系统调用,若正确,则所述二进制文件正常,若不正确,则所述二进制文件异常。
在本实施例中,glibc是Linux下使用的开源的标准C 库,它是 GNU 发布的 libc库,即运行时库。glibc 为程序员提供丰富的API,除了字符串处理、数学运算等用户态服务之外,最重要的是封装了操作系统提供的系统服务,即系统调用的封装。通常,每个特定的系统调用对应了至少一个 glibc 封装的库函数。glibc库函数访问系统调用有很多好处,首先无须知道系统底层的实现细节,如系统调用号;其次,该方法具有更好的移植性,可以将该程序移植到其它平台,或者将 glibc 库换成其它库,程序只需做少量改动。因此,通过glibc库文件访问系统调用是最规范、最提倡的方法。
发明人研究发现,如果二进制文件不通过最新版本的glibc库文件调用系统调用,则可以认为该二进制文件的库文件存在漏洞,即调用系统调用不规范。
因此,如图2所示,可对二进制文件进行下列检测:
采用哈希算法,使Linux系统中每个glibc库文件都生成一个哈希值,综合每一个哈希值生成一个哈希值集合B;
获取该二进制文件所有依赖的库文件,采用哈希算法计算每一个库文件的哈希值并综合生成一个哈希值集合A;
若所述哈希值集合A是所述哈希值集合B的真子集,则判定正确,若所述哈希值集合A是所述哈希值集合B的非真子集,则判定错误。
并且,一般通过ldd工具,得到二进制文件所依赖的所有库文件,再根据对依赖的库文件进行哈希值校验,如果与glibc库文件的哈希值一致,则说明调用的库文件不存在漏洞,或者对已知的漏洞已经通过补丁程序进行了修复。如果不一致,则判定该二进制文件由于使用了旧版本的glibc库文件而可能存在安全漏洞。
在本实施例中,由于Linux系统中,用户空间程序可以通过直接调用syscall()来产生软中断,从而让程序陷入内核态,调用系统调用执行相应的操作。但是根据大量的实践经验证明,应该尽量避免使用syscall()访问系统调用,原因有:syscall()不会检查传入参数的类型和系统调用编号,但是系统调用编号在每个体系架构上都不一样,以及不同处理器的应用程序二进制接口(Application Binary Interface,ABI)也有区别,导致通过syscall()使用系统调用的代码很难在不同平台上实现代码的可移植性。
因此,如图3所示,可以对二进制文件进行下列检测:
获取该二进制文件所有的库函数,若所述所有的库函数中不包括syscall库函数,则判定正确,若所述所有的库函数中包括syscall库函数,则判定错误。
具体地,syscall是glibc提供的其中一个库函数,审查二进制文件中是否通过syscall直接使用了系统调用的情况,可通过ltrace工具对二进制应用程序进行分析,可获取到该二进制文件执行时调用的所有库函数列表,如果该列表中包含syscall函数,则说明该二进制文件通过syscall直接访问了系统调用,则判定该二进制文件存在不规范使用系统调用的情况。
在本实施例中,用户空间程序通过软中断指令(x86平台为int 0x80,arm平台为SWI) 可陷入内核态,参数的传递是通过寄存器,eax 传递的是系统调用号,ebx、ecx、edx、esi和edi 来依次传递最多五个参数,当系统调用返回时,返回值存放在 eax 中。根据大量经验表明,开发者通过汇编代码执行系统调用存在诸多问题。因为通过glibc库函数访问系统调用前或后,glibc要执行一些额外处理,而这些操作用汇编却无法实现。例如关于对单线程或多线程的一些判断,以及执行相应的操作等。另外,通过汇编代码执行系统调用的应用在执行流程分析、故障诊断方面十分困难,可维护性较差。
因此,如图4所示,可以对二进制文件进行下列检测:
获取该二进制文件中的反汇编代码A,若所述反汇编代码A中不存在汇编指令B,则判定正确,若所述反汇编代码A中存在汇编指令B,则判定错误,其中,所述汇编指令B为mov$0x14,$eax int $0x80。
具体地,对二进制文件中是否采用了汇编指令使用系统调用,可通过objdump工具反汇编的方式获取到该二进制文件的反汇编代码,如果存在汇编指令使用系统调用的情况,反汇编代码中则会包含如下指令:
mov $0x14,$eax,表示在eax寄存器中存放的是系统调用号为20的系统调用;int$0x80,表示该平台为X86架构处理器,直接将系统调用号集成在指令中。
虽然通过库函数的规范方式调用系统调用的原理与汇编指令调用系统调用的原理相同,都是通过在eax寄存器中存放系统调用号,然后再通过软中断的方式调用系统调用,但是在反汇编代码中的格式不同,例如与上述汇编代码相同的库函数调用系统调用的反汇编代码为:mov $eax,$edx
因此,通过反汇编的方式,可确认一个二进制文件中是否通过了汇编的方式直接访问了系统调用,如果存在,则表明该二进制文件存在不规范使用系统调用的问题,存在一定的安全隐患。
在本实施例中,自定义系统调用是指按照系统调用的工作机制,开发人员在内核中自行添加特定功能的函数模块,并将其在内核中进行注册,使其能够被调用。但是根据大量的实践证明,不建议开发者在系统中自行新增系统调用,无论是在内核中添加的方式,还是模块的方式。原因有:应用程序由于使用了新增的系统调用,因此,会大大降低该应用程序在其它平台的移植性,因为其它平台可能没有该新增的系统调用。另外,对新增系统调用,以及使用该新增系统调用的应用程序,在后期的维护中变得十分困难。
因此,如图5所示,可对二进制文件进行下列检测:
获取该二进制文件调用的所有系统调用,得到系统调用列表A;
获取Linux系统内核支持的所有系统调用,得到系统调用列表B;
若所述系统调用列表A是所述系统调用列表B的真子集,则判定正确,若所述系统调用列表A是所述系统调用列表B的非真子集,则判定错误。
具体地,系统中所有的系统调用可通过man syscalls命令或内核源码文件syscalls.h来确认。然后通过strace工具对二进制文件进行分析,可得到该二进制文件使用的所有系统调用,将查询到系统调用与系统所有的系统调用进行对比,如果该二进制文件使用的系统调用是系统所有系统调用的真子集,则说明不存在研发人员新定义的系统调用;如果不是真子集,则说明该应用程序中调用了研发人员自定义的系统调用,则判定该二进制文件存在不规范使用系统调用的问题,存在一定的安全隐患。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不会使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。

Claims (9)

1.一种Linux系统中二进制文件检测方法,其特征在于,包括如下步骤:
S1、在Linux系统中获取待检测的二进制文件;
S2、判断所述二进制文件是否正确访问系统调用,若正确,则所述二进制文件正常,若不正确,则所述二进制文件异常。
2.根据权利要求1所述的Linux系统中二进制文件检测方法,其特征在于,判断所述二进制文件的库文件是否为最新版本,若是,则判定所述二进制文件为正确访问系统调用,若否,则判定为不正确。
3.根据权利要求2所述的Linux系统中二进制文件检测方法,其特征在于,所述判断所述二进制文件的库文件是否为最新版本,具体包括:
采用哈希算法,使所述Linux系统中每个glibc库文件都生成一个哈希值,综合每一个哈希值生成一个哈希值集合B;
获取所述二进制文件依赖的所有库文件,采用哈希算法计算每一个库文件的哈希值并综合生成一个哈希值集合A;
若所述哈希值集合A是所述哈希值集合B的真子集,则判定所述二进制文件的库文件是最新版本,若所述哈希值集合A是所述哈希值集合B的非真子集,则判定不是。
4.根据权利要求1所述的Linux系统中二进制文件检测方法,其特征在于,判断所述二进制文件是否通过syscall直接访问系统调用,若否,则判定所述二进制文件为正确访问系统调用,若是,则判定为不正确。
5.根据权利要求4所述的Linux系统中二进制文件检测方法,其特征在于,所述判断所述二进制文件是否通过syscall直接访问系统调用,具体包括:
获取所述二进制文件所有的库函数,若所述所有的库函数中包括syscall库函数,则判定所述二进制文件通过syscall直接访问系统调用,若不包括,则判定未通过。
6.根据权利要求1所述的Linux系统中二进制文件检测方法,其特征在于,判断所述二进制文件是否通过汇编指令直接访问系统调用,若否,则判定所述二进制文件为正确访问系统调用,若是,则判定为不正确。
7.根据权利要求6所述的Linux系统中二进制文件检测方法,其特征在于,所述判断所述二进制文件是否通过汇编指令直接访问系统调用,具体包括:
获取所述二进制文件中的反汇编代码A,若所述反汇编代码A中不存在汇编指令B,则判定所述二进制文件未通过汇编指令直接访问系统调用,若存在,则判定通过,其中,所述汇编指令B为mov $0x14,$eax int $0x80。
8.根据权利要求1所述的Linux系统中二进制文件检测方法,其特征在于,判断所述二进制文件中是否新增了系统调用,若否,则判定所述二进制文件为正确访问系统调用,若是,则判定为不正确。
9.根据权利要求8所述的Linux系统中二进制文件检测方法,其特征在于,所述判断所述二进制文件中是否新增了系统调用,具体包括:
获取所述二进制文件调用的所有系统调用,得到系统调用列表A;
获取所述Linux系统内核支持的所有系统调用,得到系统调用列表B;
若所述系统调用列表A是所述系统调用列表B的真子集,则判定所述二进制文件中没有新增系统调用,若所述系统调用列表A是所述系统调用列表B的非真子集,则判定有新增系统调用。
CN202210154256.2A 2022-02-21 2022-02-21 一种Linux系统中二进制文件检测方法 Active CN114238153B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210154256.2A CN114238153B (zh) 2022-02-21 2022-02-21 一种Linux系统中二进制文件检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210154256.2A CN114238153B (zh) 2022-02-21 2022-02-21 一种Linux系统中二进制文件检测方法

Publications (2)

Publication Number Publication Date
CN114238153A true CN114238153A (zh) 2022-03-25
CN114238153B CN114238153B (zh) 2022-07-08

Family

ID=80747619

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210154256.2A Active CN114238153B (zh) 2022-02-21 2022-02-21 一种Linux系统中二进制文件检测方法

Country Status (1)

Country Link
CN (1) CN114238153B (zh)

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1710866A (zh) * 2005-06-30 2005-12-21 西安交通大学 Linux环境下基于调用栈图的入侵检测方法
CN102073579A (zh) * 2011-01-24 2011-05-25 复旦大学 Linux文件系统审计事件合并和优化的方法
CN102112988A (zh) * 2008-06-10 2011-06-29 绿洲模具公司 用于针对生产工作流的芯片设计中的单元完整性、改变和起点的独立评估的方法和设备
US20130132690A1 (en) * 2011-11-21 2013-05-23 Cisco Technology, Inc. Selective access to executable memory
CN103699839A (zh) * 2013-12-09 2014-04-02 Tcl集团股份有限公司 一种内核级rootkit检测处理方法及系统
CN104239478A (zh) * 2014-09-04 2014-12-24 上海帝联信息科技股份有限公司 文件监控方法及装置
CN104317599A (zh) * 2014-10-30 2015-01-28 北京奇虎科技有限公司 检测安装包是否被二次打包的方法和装置
CN106406945A (zh) * 2016-09-09 2017-02-15 武汉斗鱼网络科技有限公司 一种安卓系统so文件的加载方法及电子设备
US20180268130A1 (en) * 2014-12-11 2018-09-20 Sudeep GHOSH System, method and computer readable medium for software protection via composable process-level virtual machines
CN109639726A (zh) * 2018-12-31 2019-04-16 微梦创科网络科技(中国)有限公司 入侵检测方法、装置、系统、设备及存储介质
CN111651752A (zh) * 2020-04-17 2020-09-11 北京大学 一种获取容器需要的系统调用白名单的方法
US20210314342A1 (en) * 2019-07-25 2021-10-07 Deepfactor, Inc. Systems, methods, and computer-readable media for executing a web application scan service
CN113778838A (zh) * 2020-06-09 2021-12-10 中国电信股份有限公司 二进制程序动态污点分析方法及装置

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1710866A (zh) * 2005-06-30 2005-12-21 西安交通大学 Linux环境下基于调用栈图的入侵检测方法
CN102112988A (zh) * 2008-06-10 2011-06-29 绿洲模具公司 用于针对生产工作流的芯片设计中的单元完整性、改变和起点的独立评估的方法和设备
CN102073579A (zh) * 2011-01-24 2011-05-25 复旦大学 Linux文件系统审计事件合并和优化的方法
US20130132690A1 (en) * 2011-11-21 2013-05-23 Cisco Technology, Inc. Selective access to executable memory
CN103699839A (zh) * 2013-12-09 2014-04-02 Tcl集团股份有限公司 一种内核级rootkit检测处理方法及系统
CN104239478A (zh) * 2014-09-04 2014-12-24 上海帝联信息科技股份有限公司 文件监控方法及装置
CN104317599A (zh) * 2014-10-30 2015-01-28 北京奇虎科技有限公司 检测安装包是否被二次打包的方法和装置
US20180268130A1 (en) * 2014-12-11 2018-09-20 Sudeep GHOSH System, method and computer readable medium for software protection via composable process-level virtual machines
CN106406945A (zh) * 2016-09-09 2017-02-15 武汉斗鱼网络科技有限公司 一种安卓系统so文件的加载方法及电子设备
CN109639726A (zh) * 2018-12-31 2019-04-16 微梦创科网络科技(中国)有限公司 入侵检测方法、装置、系统、设备及存储介质
US20210314342A1 (en) * 2019-07-25 2021-10-07 Deepfactor, Inc. Systems, methods, and computer-readable media for executing a web application scan service
CN111651752A (zh) * 2020-04-17 2020-09-11 北京大学 一种获取容器需要的系统调用白名单的方法
CN113778838A (zh) * 2020-06-09 2021-12-10 中国电信股份有限公司 二进制程序动态污点分析方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
傅涛: ""基于源码与二进制文件的漏洞挖掘技术"", 《软件》 *

Also Published As

Publication number Publication date
CN114238153B (zh) 2022-07-08

Similar Documents

Publication Publication Date Title
Wang et al. How {Double-Fetch} situations turn into {Double-Fetch} vulnerabilities: A study of double fetches in the linux kernel
US10698668B1 (en) Custom code transformations during compilation process
Fu et al. Space traveling across vm: Automatically bridging the semantic gap in virtual machine introspection via online kernel data redirection
US8621279B1 (en) System and method for generating emulation-based scenarios for Error Handling
Kawakoya et al. Memory behavior-based automatic malware unpacking in stealth debugging environment
US10572665B2 (en) System and method to create a number of breakpoints in a virtual machine via virtual machine trapping events
US6658471B1 (en) Method and system for zero overhead software performance measurement instrumentation
US8589889B2 (en) Apparatus and method of detecting errors in embedded software
JP4518564B2 (ja) 不正コード実行の防止方法、不正コード実行の防止用プログラム、及び不正コード実行の防止用プログラムの記録媒体
Cui et al. Tracking rootkit footprints with a practical memory analysis system
CN109857520B (zh) 一种虚拟机自省中的语义重构改进方法及系统
US10311233B2 (en) Generic unpacking of program binaries
Quach et al. Bloat factors and binary specialization
Jiang et al. ECMO: Peripheral transplantation to Rehost embedded Linux kernels
Wressnegger et al. Twice the bits, twice the trouble: Vulnerabilities induced by migrating to 64-bit platforms
Zhou et al. NCScope: hardware-assisted analyzer for native code in Android apps
CN113760770B (zh) 基于自动静态资源检测的反调试方法和系统
CN111444504A (zh) 一种用于软件运行时自动识别恶意代码的方法及装置
CN114238153B (zh) 一种Linux系统中二进制文件检测方法
CN111931191A (zh) Linux平台二进制软件堆溢漏洞动态检测方法及系统
Choi et al. Hybrid emulation for bypassing anti-reversing techniques and analyzing malware
Abidi et al. Towards the definition of patterns and code smells for multi-language systems
Hermann et al. Getting to know you: Towards a capability model for java
CN109388948B (zh) 一种基于虚拟化技术的潜在恶意软件分析方法及相关装置
US9384118B2 (en) Overlay identification of data processing target structure

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