CN113064601A - 动态加载文件的确定方法、装置、终端及存储介质 - Google Patents

动态加载文件的确定方法、装置、终端及存储介质 Download PDF

Info

Publication number
CN113064601A
CN113064601A CN201911391064.8A CN201911391064A CN113064601A CN 113064601 A CN113064601 A CN 113064601A CN 201911391064 A CN201911391064 A CN 201911391064A CN 113064601 A CN113064601 A CN 113064601A
Authority
CN
China
Prior art keywords
file
signature
target type
target
stored
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
CN201911391064.8A
Other languages
English (en)
Other versions
CN113064601B (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.)
Wuhan University WHU
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Wuhan University WHU
Guangdong Oppo Mobile Telecommunications 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 Wuhan University WHU, Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Wuhan University WHU
Priority to CN201911391064.8A priority Critical patent/CN113064601B/zh
Publication of CN113064601A publication Critical patent/CN113064601A/zh
Application granted granted Critical
Publication of CN113064601B publication Critical patent/CN113064601B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • 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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例公开了一种动态加载文件的确定方法、装置、终端及存储介质,属于计算机安全领域,本申请能够在目标应用的安装过程中,获取目标应用的签名文件,并将签名文件存储在本地目录中,在操作系统的本地框架层中获取被加载的目标类型文件,当目标类型文件的特征值与已存文件的特征值不匹配时,确定目标类型文件是动态加载文件。其中,已存文件是与目标类型文件属于同一文件格式的文件。由于本申请实施例通过安装时复制的签名文件,即可在后续调用目标应用中的文件时确定该文件是否是动态加载的文件,实现了操作系统实现系统级监控目标应用下载的动态文件的效果,提高了操作系统自身的安全防护等级,保障了操作系统运行目标应用的安全性。

Description

动态加载文件的确定方法、装置、终端及存储介质
技术领域
本申请实施例涉及计算机安全领域,特别涉及一种动态加载文件的确定方法、装置、终端及存储介质。
背景技术
随着移动终端技术的快速发展,移动终端能够安装目标应用,并通过运行目标应用实现指定的功能。
一种可能的实现方式中,移动终端在安装目标应用的过程中,移动终端中的杀毒引擎能够对目标应用中的文件进行查杀。当杀毒引擎检测到目标应用中存在病毒文件或者其它恶意文件时,杀毒引擎将删除该病毒文件或者其它恶意文件。
发明内容
本申请实施例提供了一种动态加载文件的确定方法、装置、终端及存储介质。所述技术方案如下:
根据本申请的一方面内容,提供了一种动态加载文件的确定方法,所述方法包括:
在目标应用的安装过程中,获取所述目标应用的签名文件,所述签名文件用于指示所述目标应用的安装包信息和拓展信息;
将所述签名文件存储在本地目录中;
在操作系统的本地框架层中获取被加载的目标类型文件,所述目标类型文件是可执行与可链接格式的文件;
当所述目标类型文件的特征值与已存文件的特征值不匹配时,确定所述目标类型文件是动态加载文件,所述已存文件是所述签名文件的信息所指示的,且与所述目标类型文件属于同一文件格式的文件。
根据本申请的另一方面内容,提供了一种动态加载文件的确定装置,所述装置包括:
签名文件获取模块,用于在目标应用的安装过程中,获取所述目标应用的签名文件,所述签名文件用于指示所述目标应用的安装包信息和拓展信息;
签名文件存储模块,用于将所述签名文件存储在本地目录中;
加载文件获取模块,用于在操作系统的本地框架层中获取被加载的目标类型文件,所述目标类型文件是可执行与可链接格式的文件;
动态文件确定模块,用于当所述目标类型文件的特征值与已存文件的特征值不匹配时,确定所述目标类型文件是动态加载文件,所述已存文件是所述签名文件的信息所指示的,且与所述目标类型文件属于同一文件格式的文件。
根据本申请的另一方面内容,提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如本申请实施提供的动态加载文件的确定方法。
根据本申请的另一方面内容,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如本申请实施提供的动态加载文件的确定方法。
本申请实施例提供的技术方案带来的有益效果可以包括:
本申请实施例中能够在目标应用的安装过程中,获取该目标应用的签名文件,并将该签名文件存储在本地目录中,在操作系统的本地框架层中获取被加载的目标类型文件,当目标类型文件的特征值与已存文件的特征值不匹配时,确定目标类型文件是动态加载文件。其中,已存文件是签名文件的形式指示的,与目标类型文件属于同一文件格式的文件。由于本申请实施例通过安装时复制的签名文件,即可在后续调用目标应用中的文件时确定该文件是否是动态加载的文件,实现了操作系统实现系统级监控目标应用下载的动态文件的效果,提高了操作系统自身的安全防护等级,保障了操作系统运行目标应用的安全性。
附图说明
为了更清楚地介绍本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本申请一个示例性实施例提供的一种终端的结构框图;
图2是本申请一个示例性实施例提供的一种动态加载文件的确定方法的流程图;
图3是基于图2所示实施例提供的另一种动态加载文件的确定方法的示意图;
图4是本申请另一个示例性实施例提供的动态加载文件的确定方法流程图;
图5是基于图4所示实施例提供的一种监控点添加位置的示意图;
图6是本申请一个示例性实施例提供的一种动态加载文件的确定装置的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本申请的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
为了本申请实施例所示方案易于理解,下面对本申请实施例中出现的若干名词进行介绍。
动态加载文件:用于指示目标应用在终端中完成安装时,在目标应用控制的下从云端下载到终端中的文件。由于下载的动态加载文件不被操作系统所获知。因此,获取动态加载文件对于操作系统的安全性而言有重要意义。
操作系统:用于指示安装在终端中以供终端控制目标应用的软件系统。在一种可能的实施方式中,操作系统可以是安卓系统。另一种可能的实施方式中,操作系统还可以是基于安卓(英文:Android)系统深度定制的操作系统。在又一种可能的方式中,操作系统还可以是基于Java语言或者linux内核的操作系统。本申请实施例不对操作系统进行限定。
在一种可能的方式中,操作系统包括应用层、系统框架层和内核层。示意性的,系统框架层包括Java层(应用框架层)和Native层(本地框架层)。
Java层(应用框架层):用于提供构建目标应用时可能用到的各种API(英文:Application Programming Interface,中文:应用程序接口),开发者可以通过这些API来构建自己的应用程序,例如活动管理、窗口管理、视图管理、通知管理、内容提供者、包管理、通话管理、资源管理或定位管理中的至少一种。
Native层(本地框架层):是一些常见的本地服务和链接库,用于支撑Java层(应用框架层)以实现相应的功能。同时,Native层还用于与内核层进行交互。
签名文件:用于指示目标应用的安装包信息和拓展信息。在一种可能的方式中,该签名文件位于目标应用的安装包中。示意性的,该签名文件可以是MANIFEST.M文件。终端在获取该签名文件时,能够获取完整的MANIFEST.MF文件。
目标类型文件:用于指示可执行与可链接格式的文件。示意性的,在本申请实施例中,该目标类型文件可以是elf(英文:Executable and Linkable Format,中文:可执行与可链接格式)文件。
作为一种广义的实现方式,本申请实施例中涉及的目标类型文件可以是拓展名为.o、.so、.elf或.prx的文件。
作为一种狭义的实现方式,本申请实施例中涉及的目标类型文件可以是拓展名为.elf的文件。
特征值:用于验证指定文件是否发生更改的数据。当同一文件发生更改时,该文件在更改前的特征值和更改后的特征值不同。若文件完全相同,则对应的特征值也相同。示意性的,特征值可以是哈希值。其中,该哈希值可以是SHA256。
示例性地,本申请实施例所示的动态加载文件的确定方法,可以应用在终端中,该终端具备显示屏且具备动态加载文件的确定功能。终端可以包括手机、平板电脑、膝上型电脑、台式电脑、电脑一体机、服务器、工作站、电视、机顶盒、智能眼镜、智能手表、数码相机、学习机、点读机、电纸书或车载终端等。
请参照图1,图1是本申请一个示例性实施例提供的一种终端的结构框图,如图1所示,该终端包括处理器120和存储器140,所述存储器140中存储有至少一条指令,所述指令由所述处理器120加载并执行以实现如本申请各个方法实施例所述的动态加载文件的确定方法。
在本申请中,终端100是具备确定动态加载文件的功能的电子设备。当终端100在安装目标应用时,终端100能够获取目标应用的签名文件,该签名文件用于指示目标应用的安装包信息和拓展信息,将签名文件存储在本地目录中,在操作系统的本地框架层中获取被加载的目标类型文件,该目标类型文件是可执行与可链接格式的文件,当目标类型文件的特征值与已存文件的特征值不匹配时,确定目标类型文件是动态加载文件,已存文件是签名文件的信息所指示的,且与目标类型文件属于同一文件格式的文件。
处理器120可以包括一个或者多个处理核心。处理器120利用各种接口和线路连接整个终端100内的各个部分,通过运行或执行存储在存储器140内的指令、程序、代码集或指令集,以及调用存储在存储器140内的数据,执行终端100的各种功能和处理数据。可选的,处理器120可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器120可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器120中,单独通过一块芯片进行实现。
存储器140可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory,ROM)。可选的,该存储器140包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器140可用于存储指令、程序、代码、代码集或指令集。存储器140可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等;存储数据区可存储下面各个方法实施例中涉及到的数据等。
请参考图2,图2是本申请一个示例性实施例提供的一种动态加载文件的确定方法的流程图。该动态加载文件的确定方法可以应用在上述所示的终端中。在图2中,动态加载文件的确定方法包括:
步骤210,在目标应用的安装过程中,获取目标应用的签名文件,签名文件用于指示目标应用的安装包信息和拓展信息。
在本申请实施例中,终端能够在目标应用的安装过程中,获取目标应用的签名文件。示意性的,该功能可以通过系统服务或者系统应用来实现。
在一种可能的方式中,签名文件用于指示目标应用的安装包信息和拓展信息。签名文件中包括一些配置信息,该信息可以包括一般信息、应用程序相关属性、小程序相关属性、拓展标识属性、包扩展属性、签名相关属性和自定义属性。在本申请实施例中,签名相关属性可以包括类签名的类名称、计算摘要的算法名和对应的摘要内容。
示意性的,终端可以使用计算摘要的算法来计算摘要内容,计算得到特征值。可选地,签名文件可以是MAINFEST.MF文件。
步骤220,将签名文件存储在本地目录中。
示意性的,终端能够将签名文件以追加的方式存储在本地目录中。需要说明的是,本地目录可以是终端本地指定的存储区域。终端可以将签名文件中的内容完整的复制,存储在一个文件中。可选地,终端也可以将签名文件进行复制,直接将签名文件存储在终端本地指定的存储区域。
步骤230,在操作系统的本地框架层中获取被加载的目标类型文件,目标类型文件是可执行与可链接格式的文件。
在本申请实施例中,终端中运行有操作系统,操作系统可以包括应用层、本地框架层和核心层。当目标应用需要调用指定的文件时,终端可以通过操作系统提供的各个层级中的函数依次处理指定的文件,直至该文件实现其功能。
示意性的,终端能够从操作系统的本地框架层中获取被加载的目标类型文件,该目标类型文件是可执行与可链接格式的文件。可选地,该目标类型文件是elf文件。
步骤240,当目标类型文件的特征值与已存文件的特征值不匹配时,确定目标类型文件是动态加载文件,已存文件是签名文件的信息所指示的,且与目标类型文件属于同一文件格式的文件。
在本申请实施例中,终端能够从签名文件中获取计算特征值的算法,按照该算法对签名文件中的已存文件进行运算,得到已存文件的特征值。终端将按照同样的算法对目标类型文件进行运算,得到目标类型文件的特征值。随后,终端将比较目标类型文件的特征值和已存文件的特征值,当上述两个特征值不匹配时,说明目标类型文件不是目标应用在安装时加载到终端中的文件,从而确定该目标类型文件是目标应用动态加载到终端中的文件。
请参见图3,图3是基于图2所示实施例提供的另一种动态加载文件的确定方法的示意图。在图3中,终端可以安装应用310、应用320和应用330。终端能够在每一个应用安装的过程中,获取到MAINFEST.MF文件340,并追加存储该文件。在应用安装完成后,以应用310为例。当应用310中的elf文件(也即目标类型文件)被调用时,终端的操作系统包括Java层351、Native层352(也即本地框架层)和内核层353,终端能够在Runtime.exec在Native层352的执行流程中提取到elf文件路径,并计算elf文件的SHA-256Hash值,当该的SHA-256Hash值与MAINFEST.MF文件340中的elf文件对应的SHA-256Hash值都不相同时,确定应用310此次调用的elf文件为动态加载的文件,终端将保存此次的判断结果。
可选地,在图3中包括应用安装阶段3A和文件加载阶段3B。
综上所述,本实施例提供的动态加载文件的确定方法,能够在目标应用的安装过程中,获取该目标应用的签名文件,并将该签名文件存储在本地目录中,在操作系统的本地框架层中获取被加载的目标类型文件,当目标类型文件的特征值与已存文件的特征值不匹配时,确定目标类型文件是动态加载文件。其中,已存文件是签名文件的形式指示的,与目标类型文件属于同一文件格式的文件。由于本申请实施例通过安装时复制的签名文件,即可在后续调用目标应用中的文件时确定该文件是否是动态加载的文件,实现了操作系统实现系统级监控目标应用下载的动态文件的效果,提高了操作系统自身的安全防护等级,保障了操作系统运行目标应用的安全性。
请参见图4,图4是本申请另一个示例性实施例提供的动态加载文件的确定方法流程图。该动态加载文件的确定方法可以应用在上述图1所示的终端中。在图4中,该动态加载文件的确定方法包括:
步骤410,在目标应用的安装过程中,获取目标应用的签名文件。
在本申请实施例中,步骤410的执行过程和步骤210的执行过程相同,此处不再赘述。
步骤421,遍历签名文件中的已存文件的信息。
示意性的,终端将遍历签名文件中的已存文件的信息,该已存文件是指定与目标类型文件相同类型的文件。当目标类型文件是elf文件时,已存文件同样是签名文件中的elf文件。
步骤422,将已存文件的信息存储在本地目录中。
可选地,终端能够将获取到的已存文件的信息存储在本地目录中。本地目录可以是终端中指定的存储路径,该存储路径中能够将已存文件的信息保存在终端本地。
一种可能的方式中,若签名文件是MAINFEST.MF文件,则终端可以将MAINFEST.MF文件中的elf文件的信息存储在本地目录中。
步骤431,当目标应用的安装文件中存在压缩包文件时,确定压缩包文件的类型。
可选地,目标应用的安装文件中还可能存在压缩包文件,为了提高终端获取目标应用在安装时加载的文件信息的能力,终端可以在目标应用的安装文件中存在压缩包文件时,确定压缩包文件的类型。
在一种可能的方式中,压缩包文件的类型可以包括JAR格式、APK格式或ZIP格式。
步骤432,当压缩包文件的类型是含签名文件类型时,获取压缩包文件中的子签名文件,将子签名文件中的已存文件的信息存储在本地目录中。
可选地,当压缩包文件的类型是含签名文件类型时,终端能够获取该压缩包文件中的子签名文件。一种情况中,JAR格式或APK格式的压缩包文件属于含签名文件类型,该类型的压缩包中可以含有如MAINFEST.MF文件的签名文件。终端能够从该压缩包文件中提取该子签名文件MAINFEST.MF文件,并将该子签名文件MAINFEST.MF文件中的已存文件的信息存储在本地目录中。例如,终端能够从目标应用的安装文件的JAR格式或APK格式的压缩包文件中的MAINFEST.MF文件中,提取elf文件,并存储在本地目录中。
步骤433,当压缩包文件的类型是未含签名文件类型时,计算压缩包文件中的已存文件的特征值,将特征值存储在本地目录中。
可选地,终端能够在压缩包文件的类型是未含签名文件类型时,计算压缩包文件中的文件的特征值。例如,该未含签名文件类型可以是ZIP格式类型。当压缩包文件是ZIP格式的类型时,终端能够计算该ZIPO格式文件中的elf文件的特征值,并将该特征值存储在本地目录中。
步骤440,当目标应用的安装文件中的标签信息文件夹存在文件时,计算标签信息文件夹中的已存文件的特征值,将特征值存储在本地目录中。
可选地,标签信息文件夹可以是META-INF文件夹。当该标签信息文件夹中存在文件时,终端将计算该标签信息文件夹中的已存文件的特征值,并将该特征值存储在本地目录中。
步骤451,当本地框架层中的子进程函数被调用时,监控子进程函数调用的文件执行函数,文件执行函数用于在调用进程内部执行可执行文件。
可选地,子进程函数可以是Native层中的childProcess()函数,当该函数被调用时,终端监控该函数调用的文件执行函数。示意性的,文件执行函数可以是JDK_execvpe()函数。
步骤452,当文件执行函数被调用时,获取文件执行函数中的第一个参数。
示意性的,终端能够在文件执行函数被调用时,获取文件执行函数中的第一个参数。需要说明的是,文件执行函数中每一个参数的位置固定,第一个参数特指存在于其中指定位置处的参数。
步骤453,获取第一个参数指示的第一进程标识符,第一进程标识符是子进程函数复刻的子进程的进程标识符。
示意性的,第一进程标识符是子进程函数复刻的子进程的进程标识符。可选地,该第一进程标识符是pid。
步骤454,终端获取第一个参数指示的第二进程标识符,第二进程标识符是子进程对应的父进程的进程标识符。
可选地,终端能够获取第一个参数指示的第二进程标识符,该第二进程标识符是子进程对应的父进程的进程标识符。
步骤455,根据第一进程标识符和第二进程标识符,获取目标类型文件。
在本申请实施例中,终端能够根据第一进程标识符和第二进程标识符得到目标类型文件的文件路径,再通过文件路径获取到目标类型文件。另一种可能的实施方式中,终端可以根据目标类型文件的标识,获取到目标类型文件。
步骤460,当目标类型文件的特征值与已存文件的特征值不匹配时,确定目标类型文件是动态加载文件。
可选地,终端能够在目标类型文件的特征值与已存文件的特征值不匹配时,确定目标类型该文件是动态加载文件。由于文件不同,特征值具备唯一标识文件的身份的作用。
步骤471,当目标类型文件是动态加载文件时,调用杀毒引擎,对目标类型文件进行检测。
一种可能的方式中,当目标类型文件的特征值与已存文件的特征值不匹配时,终端能够调用杀毒引擎,对目标类型文件进行检测。
需要说明的是,在目标类型文件的是动态加载文件的情况下,终端能够调用杀毒引擎对目标类型文件进行检测,以保障终端的安全。
步骤472,当杀毒引擎指示目标类型文件为恶意文件时,终止执行目标类型文件。
需要说明的是,终端可以在杀毒引擎指示目标类型文件为恶意文件时,终止执行目标类型文件。
步骤473,当杀毒引擎指示目标类型文件为恶意文件时,指示杀毒引擎删除目标类型文件。
示意性的,终端能够在杀毒引擎指示目标类型文件为恶意文件时,指示杀毒引擎将目标类型文件予以删除。
在本申请实施例提供的一种应用场景中,终端可以通过以下过程获知目标应用中是否存在动态加载文件。
首先,本申请实施例将修改getminpackageinfo()等函数内容,以令目标应用在安装过程中自行解压出APK中的MANIFEST.MF文件。终端中第一个目标应用的MANIFEST.MF文件备份到本地目录下,后续的目标应用的APK的MANIFEST.MF文件将以追加的方式存到第一个目标应用的MANIFEST.MF文件中。
接下来,终端将添加监控点。示意性的,当本申请实施例中的操作系统是Android8.0时,该操作系统中的Runtime.exec可以用来执行Linux命令。其中,由于恶意应用可以调用上述Runtime.exec打开shell窗口,后续通过传递函数执行恶意应用。因此,监控动态加载文件是保障终端安全的重要研究方向。本申请实施例在上述流程中,添加指定节点进行监控。
目标应用中的目标类型文件将从Java层传入参数,以Rumtime.exec()作为入口,经过一系列函数调用。在UNIXProcess类的构造函数中,终端会调用ForkAndExec()函数。此时,目标类型文件的加载过程将从从Java层进入Native层。
在调用过程中,ForkAndExec()函数对应UNIXProcess_md.c的UNIXProcess_forkAndExec()函数。该ForkAndExec()函数先创建一个ChildStuff的指针变量c。其中,ChildStuff是一个结构体,保存有子进程的各个状态。ForkAndExec()函数将各个参数赋予指针变量c,然后调用StartChild()函数。
可选地,StartChild()函数根据调用模式的不同,会采取相对应的操作。本实施例以采用fork的操作为例进行介绍。当StartChild()函数在调用fork之后,判断resultPid是否是子进程。若resultPid是子进程,则终端将调用childProcess()函数。childProcess()函数将关闭parent侧的管道,然后赋予child侧管道正确的文件,然后关闭管道,切换到新的工作目录,调用JDK_execvp()函数。
其中,JDK_execvpe()函数有三个参数:argv[0]是要运行的程序名,argv是命令和参数;envv是环境变量,一般之后会调用execvp()函数,而execvp()实际调用execvpe()。如果传入的程序名是绝对路径或相对路径,execvpe()会首先尝试调用execve()函数,如果不成功,会调用_execas_script函数,它实际还是调用了execve()函数。execve实际也是系统调用了。
在本申请实施例中,终端将在Native层的加载流程中,在UNIXProcess_md.c的childProcess()中添加监控,以捕捉目标应用加载的elf文件。
请参见图5,图5是基于图4所示实施例提供的一种监控点添加位置的示意图。在图5中,在Java层351和Native层352中。其中,终端在childProcess()函数500中添加监控。
综上所述,本实施例能够判断出动态加载的elf文件是不是应用运行过程中下载的,实时掌握监控应用运行时下载的代码文件动态加载的情况,因此可以有针对性地对此类动态加载的文件进行下一步的检测,包括是否加壳,是否存在敏感函数等。结合杀毒引擎监测应用动态加载的elf文件是否附带恶意程序,能够减少目标应用通过动态加载代码企图实施恶意攻击的行为,提高操作系统的病毒查杀能力,从而增强了系统的安全性。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图6,图6是本申请一个示例性实施例提供的一种动态加载文件的确定装置的结构框图。该动态加载文件的确定装置可以通过软件、硬件或者两者的结合实现成为终端的全部或一部分。该装置包括:
签名文件获取模块610,用于在目标应用的安装过程中,获取所述目标应用的签名文件,所述签名文件用于指示所述目标应用的安装包信息和拓展信息;
签名文件存储模块620,用于将所述签名文件存储在本地目录中;
加载文件获取模块630,用于在操作系统的本地框架层中获取被加载的目标类型文件,所述目标类型文件是可执行与可链接格式的文件;
动态文件确定模块640,用于当所述目标类型文件的特征值与已存文件的特征值不匹配时,确定所述目标类型文件是动态加载文件,所述已存文件是所述签名文件的信息所指示的,且与所述目标类型文件属于同一文件格式的文件。
在一个可选的实施例中,所述加载文件获取模块630,用于当所述本地框架层中的子进程函数被调用时,监控所述子进程函数调用的文件执行函数,所述文件执行函数用于在调用进程内部执行可执行文件;当所述文件执行函数被调用时,获取所述文件执行函数中的第一个参数;获取所述第一个参数指示的第一进程标识符,所述第一进程标识符是所述子进程函数复刻的子进程的进程标识符;获取所述第一个参数指示的第二进程标识符,所述第二进程标识符是所述子进程对应的父进程的进程标识符;根据所述第一进程标识符和所述第二进程标识符,获取所述目标类型文件。
在一个可选的实施例中,所述签名文件存储模块620,用于遍历所述签名文件中的所述已存文件的信息;将所述已存文件的信息存储在所述本地目录中。
在一个可选的实施例中,所述装置还包括压缩类型确定模块、第一存储模块和第二存储模块,所述压缩类型确定模块,用于当所述目标应用的安装文件中存在压缩包文件时,确定所述压缩包文件的类型;所述第一存储模块,用于当所述压缩包文件的类型是含签名文件类型时,获取所述压缩包文件中的子签名文件,将所述子签名文件中的所述已存文件的信息存储在所述本地目录中;所述第二存储模块,用于当所述压缩包文件的类型是未含签名文件类型时,计算所述压缩包文件中的所述已存文件的所述特征值,将所述特征值存储在所述本地目录中。
在一个可选的实施例中,所述装置还包括第三存储模块,用于当所述目标应用的安装文件中的标签信息文件夹存在文件时,计算所述标签信息文件夹中的所述已存文件的所述特征值,将所述特征值存储在所述本地目录中。
在一个可选的实施例中,所述装置还包括引擎调用模块和终止执行模块,所述引擎调用模块,用于当所述目标类型文件是动态加载文件时,调用杀毒引擎,对所述目标类型文件进行检测;所述终止执行模块,用于当所述杀毒引擎指示所述目标类型文件为恶意文件时,终止执行所述目标类型文件。
在一个可选的实施例中,所述装置还包括文件删除模块,所述文件删除模块,用于当所述杀毒引擎指示所述目标类型文件为恶意文件时,指示所述杀毒引擎删除所述目标类型文件。
本申请实施例还提供了一种计算机可读介质,该计算机可读介质存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的动态加载文件的确定方法。
需要说明的是:上述实施例提供的动态加载文件的确定装置在执行动态加载文件的确定方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的动态加载文件的确定装置与动态加载文件的确定方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的能够实现的示例性的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种动态加载文件的确定方法,其特征在于,所述方法包括:
在目标应用的安装过程中,获取所述目标应用的签名文件,所述签名文件用于指示所述目标应用的安装包信息和拓展信息;
将所述签名文件存储在本地目录中;
在操作系统的本地框架层中获取被加载的目标类型文件,所述目标类型文件是可执行与可链接格式的文件;
当所述目标类型文件的特征值与已存文件的特征值不匹配时,确定所述目标类型文件是动态加载文件,所述已存文件是所述签名文件的信息所指示的,且与所述目标类型文件属于同一文件格式的文件。
2.根据权利要求1所述的方法,其特征在于,所述在操作系统的本地框架层中获取被加载的目标类型文件,包括:
当所述本地框架层中的子进程函数被调用时,监控所述子进程函数调用的文件执行函数,所述文件执行函数用于在调用进程内部执行可执行文件;
当所述文件执行函数被调用时,获取所述文件执行函数中的第一个参数;
获取所述第一个参数指示的第一进程标识符,所述第一进程标识符是所述子进程函数复刻的子进程的进程标识符;
获取所述第一个参数指示的第二进程标识符,所述第二进程标识符是所述子进程对应的父进程的进程标识符;
根据所述第一进程标识符和所述第二进程标识符,获取所述目标类型文件。
3.根据权利要求2所述的方法,其特征在于,所述将所述签名文件存储在本地目录中,包括:
遍历所述签名文件中的所述已存文件的信息;
将所述已存文件的信息存储在所述本地目录中。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
当所述目标应用的安装文件中存在压缩包文件时,确定所述压缩包文件的类型;
当所述压缩包文件的类型是含签名文件类型时,获取所述压缩包文件中的子签名文件,将所述子签名文件中的所述已存文件的信息存储在所述本地目录中;
当所述压缩包文件的类型是未含签名文件类型时,计算所述压缩包文件中的所述已存文件的所述特征值,将所述特征值存储在所述本地目录中。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
当所述目标应用的安装文件中的标签信息文件夹存在文件时,计算所述标签信息文件夹中的所述已存文件的所述特征值,将所述特征值存储在所述本地目录中。
6.根据权利要求1至5任一所述的方法,其特征在于,所述方法还包括:
当所述目标类型文件是动态加载文件时,调用杀毒引擎,对所述目标类型文件进行检测;
当所述杀毒引擎指示所述目标类型文件为恶意文件时,终止执行所述目标类型文件。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当所述杀毒引擎指示所述目标类型文件为恶意文件时,指示所述杀毒引擎删除所述目标类型文件。
8.一种动态加载文件的确定装置,其特征在于,所述装置包括:
签名文件获取模块,用于在目标应用的安装过程中,获取所述目标应用的签名文件,所述签名文件用于指示所述目标应用的安装包信息和拓展信息;
签名文件存储模块,用于将所述签名文件存储在本地目录中;
加载文件获取模块,用于在操作系统的本地框架层中获取被加载的目标类型文件,所述目标类型文件是可执行与可链接格式的文件;
动态文件确定模块,用于当所述目标类型文件的特征值与已存文件的特征值不匹配时,确定所述目标类型文件是动态加载文件,所述已存文件是所述签名文件的信息所指示的,且与所述目标类型文件属于同一文件格式的文件。
9.一种终端,其特征在于,所述终端包括处理器、和与所述处理器相连的存储器,以及存储在所述存储器上的程序指令,所述处理器执行所述程序指令时实现如权利要求1至7任一所述的动态加载文件的确定方法。
10.一种计算机可读存储介质,所述存储介质中存储有程序指令,其特征在于,所述程序指令被处理器执行时实现如权利要求1至7任一所述的动态加载文件的确定方法。
CN201911391064.8A 2019-12-30 2019-12-30 动态加载文件的确定方法、装置、终端及存储介质 Active CN113064601B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911391064.8A CN113064601B (zh) 2019-12-30 2019-12-30 动态加载文件的确定方法、装置、终端及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911391064.8A CN113064601B (zh) 2019-12-30 2019-12-30 动态加载文件的确定方法、装置、终端及存储介质

Publications (2)

Publication Number Publication Date
CN113064601A true CN113064601A (zh) 2021-07-02
CN113064601B CN113064601B (zh) 2024-06-25

Family

ID=76557851

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911391064.8A Active CN113064601B (zh) 2019-12-30 2019-12-30 动态加载文件的确定方法、装置、终端及存储介质

Country Status (1)

Country Link
CN (1) CN113064601B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116644425A (zh) * 2022-04-02 2023-08-25 港珠澳大桥管理局 基于Javaagent的Web漏洞即时阻断方法、装置、设备和存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130067577A1 (en) * 2011-09-14 2013-03-14 F-Secure Corporation Malware scanning
CN103577206A (zh) * 2012-07-27 2014-02-12 北京三星通信技术研究有限公司 一种应用软件的安装方法和装置
CN104715196A (zh) * 2015-03-27 2015-06-17 北京奇虎科技有限公司 智能手机应用程序的静态分析方法及系统
CN106293880A (zh) * 2016-08-10 2017-01-04 北京奇虎科技有限公司 在Windows系统上运行Android应用程序的方法及装置
CN106570394A (zh) * 2016-11-10 2017-04-19 厦门安胜网络科技有限公司 一种检测恶意程序的方法
CN108509795A (zh) * 2018-04-25 2018-09-07 厦门安胜网络科技有限公司 一种监控elf文件调用系统函数的方法、装置及存储介质
CN109934016A (zh) * 2019-03-07 2019-06-25 江苏通付盾信息安全技术有限公司 应用的签名校验方法、装置及电子设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130067577A1 (en) * 2011-09-14 2013-03-14 F-Secure Corporation Malware scanning
CN103577206A (zh) * 2012-07-27 2014-02-12 北京三星通信技术研究有限公司 一种应用软件的安装方法和装置
CN104715196A (zh) * 2015-03-27 2015-06-17 北京奇虎科技有限公司 智能手机应用程序的静态分析方法及系统
CN106293880A (zh) * 2016-08-10 2017-01-04 北京奇虎科技有限公司 在Windows系统上运行Android应用程序的方法及装置
CN106570394A (zh) * 2016-11-10 2017-04-19 厦门安胜网络科技有限公司 一种检测恶意程序的方法
CN108509795A (zh) * 2018-04-25 2018-09-07 厦门安胜网络科技有限公司 一种监控elf文件调用系统函数的方法、装置及存储介质
CN109934016A (zh) * 2019-03-07 2019-06-25 江苏通付盾信息安全技术有限公司 应用的签名校验方法、装置及电子设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116644425A (zh) * 2022-04-02 2023-08-25 港珠澳大桥管理局 基于Javaagent的Web漏洞即时阻断方法、装置、设备和存储介质
CN116644425B (zh) * 2022-04-02 2024-02-20 港珠澳大桥管理局 基于Javaagent的Web漏洞即时阻断方法、装置、设备和存储介质

Also Published As

Publication number Publication date
CN113064601B (zh) 2024-06-25

Similar Documents

Publication Publication Date Title
CN108133139B (zh) 一种基于多运行环境行为比对的安卓恶意应用检测系统
US9208328B2 (en) Security system and method for operating systems
US20150332043A1 (en) Application analysis system for electronic devices
CN106897609B (zh) 一种对动态加载的应用程序进行监控的方法及装置
WO2019072008A1 (zh) 小程序的安全扫描方法、装置以及电子设备
CN105786538B (zh) 基于安卓系统的软件升级方法和装置
US10176327B2 (en) Method and device for preventing application in an operating system from being uninstalled
CN114254304A (zh) 容器安全入侵检测方法、装置、计算机设备及存储介质
CN109831351B (zh) 链路跟踪方法、装置、终端及存储介质
CN113961245A (zh) 一种基于微服务应用的安全防护系统、方法及介质
CN113391874A (zh) 一种虚拟机检测对抗方法、装置、电子设备及存储介质
CN110704131B (zh) 一种html5应用调用原生应用的方法和装置
CN105765531A (zh) 对程序二进制文件的通用拆包
CN108958785B (zh) 一种应用程序升级方法及装置
CN110780918B (zh) 中间件容器处理方法、装置、电子设备及存储介质
CN112199151B (zh) 一种应用程序的运行方法及装置
CN113064601B (zh) 动态加载文件的确定方法、装置、终端及存储介质
CN114371859A (zh) 应用软件rasp程序更新方法、服务器、电子设备及存储介质
CN111090442B (zh) 一种应用更新方法、装置和存储介质
CN115859280A (zh) 内存马的检测方法、装置、设备及存储介质
CN113127860B (zh) 可执行文件的检测方法、装置、终端及存储介质
CN111666596B (zh) 一种数据处理方法、设备及介质
CN115048630A (zh) 应用程序的完整性校验方法及装置、存储介质及电子设备
WO2014098387A1 (ko) 악성 애플리케이션 진단장치 및 방법
CN113656291A (zh) 软件脚本引擎动态调用方法

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