CN113672908B - 定点插桩方法、相关装置及系统 - Google Patents
定点插桩方法、相关装置及系统 Download PDFInfo
- Publication number
- CN113672908B CN113672908B CN202110877386.4A CN202110877386A CN113672908B CN 113672908 B CN113672908 B CN 113672908B CN 202110877386 A CN202110877386 A CN 202110877386A CN 113672908 B CN113672908 B CN 113672908B
- Authority
- CN
- China
- Prior art keywords
- application
- electronic device
- behavior
- detected
- sandbox
- 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
Links
Images
Classifications
-
- 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/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Virology (AREA)
- User Interface Of Digital Computer (AREA)
- Telephone Function (AREA)
Abstract
本申请公开了一种定点插桩方法、相关装置及系统,该方法可以根据已知应用对函数的调用情况,训练神经网络模型,并利用训练好的神经网络模型从已知应用调用的函数中筛选出桩点函数,该桩点函数为敏感函数中,与恶意应用存在较大关联性的函数,电子设备可以对该桩点函数进行插桩,当电子设备在沙箱环境中运行待检测应用时,可以根据该待检测应用是否调用桩点函数来确定该待检测应用是否为恶意应用。这样,精简了电子设备插桩的函数数量,提高了沙箱检测待检测应用时的检测精度,减少了检测过程中资源的消耗,加快了电子设备的检测速度,减小了沙箱的量体。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及定点插桩方法、相关装置及系统。
背景技术
近年来,随着网络的普及与高速发展,恶意应用已逐渐发展为互联网上不容忽视的热点问题。这些恶意应用能够执行某些敏感行为,比如获取电子设备的设备信息、向用户发送短信、读取电子设备上的通讯录、获取用户的位置信息、使用电子设备的摄像头、监听用户的通话等等。
为了保证电子设备不受恶意应用的侵扰,可以在运动应用之前,使用沙箱来检测应用的安全性。沙箱,是一个虚拟系统程序,它可以为运行中的程序提供隔离环境,保证程序创建、修改、删除、读取等文件操作都在这个隔离环境内进行,不会影响到系统中的真实文件。这样,电子设备可以将应用放入沙箱环境中来检测应用是否为恶意应用。
但是,如何提高沙箱的检测精度是目前亟待解决的问题。
发明内容
本申请提供了定点插桩方法、相关装置及系统,该方法能够利用神经网络从敏感函数中筛选出桩点函数,利用桩点函数检测待检测应用的安全性,提高检测待检测应用安全性的检测精度。
第一方面,本申请实施例提供了一种定点插桩方法,该方法应用于包括电子设备和服务器的通信系统,该方法包括:该服务器以多个应用的行为序列、该行为序列的行为类型为输入,以该应用的应用类型为输出,训练得到神经网络模型;其中,该应用类型包括安全应用和非安全应用,该行为序列记录应用运行过程中调用的函数,该行为类型描述该行为序列与该应用类型的关联度;该服务器根据该神经网络模型,从该多个应用的行为序列中,筛选出与非安全应用的关联度大于第一阈值的第一行为序列;该服务器获取目标函数,该目标函数为该第一行为序列中包含的预设的敏感函数;该服务器将该目标函数发送给该电子设备;该电子设备在子用户空间的第一沙箱环境中运行待检测应用,其中,该待检测应用的安装包通过主用户空间获取,该主用户空间和该子用户空间对应该电子设备中不同的存储区,该主用户空间和该子用户空间相互独立;该电子设备获取运行该待检测应用的过程中,该待检测应用对该电子设备中各个函数的调用情况;在该待检测应用调用了该目标函数的情况下,该电子设备确定该待检测应用为非安全应用;在该待检测应用未调用该目标函数的情况下,该电子设备确定该待检测应用为安全应用。
可以看出,该定点插桩方法可以应用到包含两个设备的通信系统中,服务器利用神经网络确定出桩点函数,该桩点函数为敏感函数中,与恶意应用的关联性较大的函数,电子设备再根据待检测应用对桩点函数的调用情况来分析待检测应用的安全性,避免了电子设备根据所有的敏感函数的调用情况来分析待检测应用的安全性,提高了沙箱的检测精度,加快了沙箱的检测速度,减少了检测过程中资源的消耗,减少了沙箱的量体。
结合第一方面,在一种可能的实现方式中,该敏感函数为执行敏感行为时调用的函数,该敏感行为包括以下一项或多项:读取用户隐私信息、修改用户权限或破坏系统环境。
敏感函数为预先定义的与恶意应用的敏感行为相关的函数,敏感行为可以是指例如,获取电子设备的设备信息、向用户发送短信、读取电子设备上的通讯录、获取用户的位置信息、使用电子设备的摄像头、监听用户的通话等等可能涉及泄露用户个人信息、破坏系统环境等风险的行为。
结合第一方面,在一种可能的实现方式中,该行为类型包含正常行为,与非安全无关行为行为,与非安全相关行为,非安全行为;其中,该正常行为为安全应用执行的行为,该非安全行为为非安全应用执行的该敏感行为,该非安全无关行为为非安全应用中,与该敏感行为无关的行为,该非安全相关行为为非安全应用中,与该敏感行为相关的行为,该正常行为、与非安全无关行为、与非安全相关行为、非安全行为与非安全应用的关联度逐渐增大。
结合第一方面,在一种可能的实现方式中,该电子设备在子用户空间的第一沙箱环境中运行待检测应用之前,该方法还包括:该电子设备标记该电子设备中的该目标函数;该电子设备获取运行该待检测应用的过程中,该待检测应用对该电子设备中各个函数的调用情况,具体包括:该电子设备获取运行该待检测应用的过程中,该待检测应用对该电子设备中该目标函数的调用情况。
在电子设备获得桩点函数之后,电子设备可以对内部包含的桩点函数进行插桩,这样,当待检测应用调用到桩点函数时,即可形成记录该桩点函数调用情况的行为序列,之后,电子设备可以根据待检测应用的行为序列来分析待检测应用的安全性。
结合第一方面,在一种可能的实现方式中,该服务器根据该神经网络模型,从该多个应用的行为序列中,筛选出与非安全应用的关联度大于第一阈值的第一行为序列,具体包括:该服务器将该多个应用的行为序列输入到该神经网络模型中,该服务器根据输出值从该多个应用的行为序列中筛选一部分行为序列,其中,筛选的行为序列对应的输出值与非安全应用的关联度大于第二阈值;该服务器将筛选的一部分行为序列重复输入该神经网络模型,并再次筛选行为序列,直到重复的次数达到预设次数,或者,筛选出的行为序列的数量达到预设数量,筛选出该第一行为序列。
可以看出,可以利用训练好的神经网络模型,通过不断迭代行为序列,将行为序列输入到该神经网络模型并将关联度较大的行为序列筛选出来,并不断重复上述输入和筛选的过程,从而最终获得最终筛选的关联度较大的行为序列。
结合第一方面,在一种可能的实现方式中,该服务器根据该神经网络模型,从该多个应用的行为序列中,筛选出与非安全应用的关联度大于第一阈值的第一行为序列,具体包括:
该服务器根据以下公式筛选出该第一行为序列:
x2为应用i中的行为序列j的卡方值,该行为序列j为该应用i中的任意一个行为序列,该应用i为该多个应用中与非安全应用的关联度大于第三阈值的任意一个应用;卡方值越小,该应为序列j与该应用i的应用类型的关联度越大;T为应用i的期望计数,该期望计数为该应用i中的所有行为序列同时输入到该训练好的神经网络模型后,获得的输出值;A为应用i中的行为序列j的统计计数,该统计计数为该应用i中的行为序列j输入到该训练好的神经网络模型后,获得的输出值;该第一行为序列为卡方值较小的行为序列。
可以看出,可以利用训练好的模型,结合卡方检验来筛选出关联度较大的行为序列。这里,可以通过卡方值的大小,选取与恶意应用的偏差较小,即关联度较大的行为序列,作为最终筛选的关联度较大的行为序列。
结合第一方面,在一种可能的实现方式中,在该待检测应用调用了该目标函数,且,该目标函数存在预设的先后顺序的情况下,该电子设备确定该待检测应用为非安全应用。
可以看出,电子设备除了根据待检测应用是否调用桩点函数来确定待检测应用的安全性之外,电子设备还可以进一步结合待检测应用调用的桩点函数之间的关联性,即调用的先后顺序来确定待检测应用的安全性。
结合第一方面,在一种可能的实现方式中,在该服务器训练该神经网络模型的过程中,当该神经网络模型的输出误差位于预设误差范围内时,该神经网络模型完成训练。
结合第一方面,在一种可能的实现方式中,该神经网络模型为Elman神经网络。
结合第一方面,在一种可能的实现方式中,该电子设备在子用户空间的第一沙箱环境中运行待检测应用之前,该方法还包括:
该电子设备根据该待检测应用的安装包,在该第一沙箱环境中安装该待检测应用。
电子设备可以在获取到待检测应用的安装包之后,将待检测应用安装到沙箱环境中,进而实现在沙箱环境中运行该待检测应用,并根据该待检测应用的运行行为来分析待检测应用的安全性。
结合第一方面,在一种可能的实现方式中,该电子设备在子用户空间的第一沙箱环境中运行待检测应用之前,该方法还包括:该电子设备在该子用户空间中创建该第一沙箱环境。
可以看出,电子设备可以基于子用户创建沙箱用户,利用该沙箱用户提供的沙箱环境来检测待检测应用的安全性,避免待检测应用对电子设备的真实环境造成破坏,或者,泄露用户的隐私信息等等。
第二方面,本申请实施例提供了一种电子设备,包括:存储器,一个或多个处理器,多个应用程序,以及一个或多个程序;其中该一个或多个程序被存储在该存储器中;该一个或多个处理器在执行该一个或多个程序时,使得该电子设备实现如第一方面或第一方面的任意一种实施方式所描述的方法。
第三方面,本申请实施例提供了一种计算机可读存储介质,包括指令,当该指令在电子设备上运行时,使得该电子设备执行如第一方面或第一方面的任意一种实施方式所描述的方法。
第四方面,本申请实施例提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行如如第一方面或第一方面的任意一种实施方式所描述的方法。
实施例本申请实施例提供的方法,电子设备可以利用沙箱用户提供的沙箱环境来运行待检测应用,并根据该待检测应用对桩点函数的调用情况来分析待检测应用的安全性,其中,桩点函数为通过神经网络模型筛选出的函数,桩点函数为与恶意应用的关联性较大的敏感函数,通过分析待检测应用对桩点函数的调用情况,来判断待检测应用的安全性,避免了一些与恶意应用关联性较小的函数调用情况影响检测结果,提高了沙箱检测待检测应用时的检测精度,加快了电子设备的检测速度,减少了沙箱的量体。
附图说明
图1为本申请实施例提供的一种电子设备的硬件结构示意图;
图2A-图2I为本申请实施例涉及的一些用户界面;
图3为本申请实施例提供的一种电子设备的软件结构示意图;
图4为本申请实施例提供的电子设备的软件结构中,内部各模块之间的交互流程图;
图5为本申请实施例提供的检测方法的流程示意图;
图6为申请实施例提供的沙箱环境中的部分进程;
图7为本申请实施例提供的沙箱环境中的部分文件;
图8为本申请实施例提供的沙箱初始化的详细流程示意图;
图9为本申请实施例提供的定点插桩方法的流程示意图;
图10为本申请实施例提供的Elman神经网络的结构示意图;
图11为本申请实施例提供的一种无线通信系统10。
具体实施方式
下面将结合附图对本申请实施例中的技术方案进行清楚、详尽地描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;文本中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为暗示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征,在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
本申请以下实施例中的术语“用户界面(user interface,UI)”,是应用程序或操作系统与用户之间进行交互和信息交换的介质接口,它实现信息的内部形式与用户可以接受形式之间的转换。用户界面是通过java、可扩展标记语言(extensible markuplanguage,XML)等特定计算机语言编写的源代码,界面源代码在电子设备上经过解析,渲染,最终呈现为用户可以识别的内容。用户界面常用的表现形式是图形用户界面(graphicuser interface,GUI),是指采用图形方式显示的与计算机操作相关的用户界面。它可以是在电子设备的显示屏中显示的文本、图标、按钮、菜单、选项卡、文本框、对话框、状态栏、导航栏、Widget等可视的界面元素。
为了便于理解本申请,首先介绍本申请涉及的几个技术术语。
(一)沙箱(Sandboxie)
沙箱,又叫沙盘,是一个虚拟系统程序,其原理是通过重定向技术,把程序生成和修改的文件定向到自身文件夹中。它可以创造了一个独立作业环境,在其内部运行的程序并不能对硬盘产生永久性的影响。在网络安全中,沙箱指在隔离环境中,用以测试不受信任的文件或应用程序等行为的工具。
(二)插桩
插桩是在保证被测程序原有逻辑完整性的基础上在程序中插入一些探针(又称为“探测仪”,本质上就是进行信息采集的代码段,可以是赋值语句或采集覆盖信息的函数调用),通过探针的执行并抛出程序运行的特征数据,通过对这些数据的分析,可以获得程序的控制流和数据流信息,进而得到逻辑覆盖等动态信息,从而实现测试目的的方法。
(三)多用户系统
多用户系统是指一台主机,通过多个用户共享主机资源。其中,多用户系统中,多个用户可以“分时共用”电子设备的主机资源,各用户都存在专用的存储空间,且互相之间的数据是隔离的。多用户系统的基本思想为多用户“分时共用”一台主机,共享主机资源,包括硬件资源和软件资源,节省投资。主机承担所有用户的信息处理任务,实施集中管理。
其中,这多个用户可以包括主用户和子用户,一个多用户系统可以包括一个主用户,多个子用户,主用户是指首次注册或登录的用户,主用户可以使用电子设备的所用功能,并且主用户可以添加或删除子用户,管理子用户的权限,例如,授权子用户使用通话功能、短信功能等,子用户是指再次注册的用户,子用户可以使用电子设备的部分功能。另外,同一时间段内,只允许一个用户下的进程在前台显示和交互,电子设备可以通过设置应用程序切换用户。
(四)神经网络
神经网络可以是由神经单元组成的,神经单元可以是指以xs和截距1为输入的运算单元,该运算单元的输出可以为:
s=1、2、……n,n为大于1的自然数,Ws为xs的权重,b为神经单元的偏置。f为神经单元的激活函数(activation functions),用于将非线性特性引入神经网络中,来将神经单元中的输入信号转换为输出信号。该激活函数的输出信号可以作为下一层卷积层的输入。神经网络是将许多个上述单一的神经单元联结在一起形成的网络,即一个神经单元的输出可以是另一个神经单元的输入。每个神经单元的输入可以与前一层的局部接受域相连,来提取局部接受域的特征,局部接受域可以是由若干个神经单元组成的区域。
在本申请实施例中,该神经网络可以为卷积神经网络(convolutional neuronnetwork,CNN)、Elman神经网络等等。本申请实施例对此不作限制。
其中,卷积神经网络是一种带有卷积结构的深度神经网络。对于一个训练好的卷积神经网络,可以将其训练样本重新通过网络,记录网络中每一个神经元的激活情况来计算样本内每个特征对该样本所属真实类别的贡献度。进而,统计特征集合中每个特征出现时的平均贡献度,作为网络模型对该特征的重要性判断。
Elman神经网络是一种典型的动态递归神经网络,它的结构一般包括四层:输入层、隐藏层、承接层和输出层。其中,输出层起到信号传输的作用,输出层起到加权作用,承接层用来记忆隐藏层前一时刻的输出值,隐藏层的输出通过承接层的延迟和存储又自联到隐藏层的输入,从而组成一个内部反馈网络,这使得神经网络对历史数据具有敏感性,增加了神经网络本身处理动态信息的能力,从而达到了动态建模的目的。
沙箱,可以提供一个隔离环境来检测待检测应用的安全性。具体地,电子设备可以将待检测应用放入沙箱环境中运行,通过分析待检测应用在沙箱环境中的运行行为来分析该待检测应用的安全性。其中,该运行行为可以是指运行的待检测应用对电子设备的函数的调用行为。换句话说,电子设备可以根据待检测应用在运行过程中,是否调用与敏感行为相关的函数,来分析该待检测应用的安全性。
由于电子设备中包括用于执行敏感行为的功能函数,即敏感函数,因此可以通过检测待检测应用是否调用敏感函数来判断待检测应用是否执行敏感行为,进而确定待检测应用是否为恶意应用。
其中,敏感函数是指应用执行敏感行为时调用的函数,敏感行为包括以下一项或多项:读取用户隐私信息、修改用户权限或破坏系统环境等等,例如,敏感行为可以是指获取电子设备的设备信息、向用户发送短信、读取电子设备上的通讯录、获取用户的位置信息、使用电子设备的摄像头、监听用户的通话等等可能涉及泄露用户个人信息、破坏系统环境等存在风险的行为。
但是,当待检测应用执行敏感行为时,也仅仅只能说明该待检测应用为恶意应用的可能性更大,并不能确定该待检测应用一定为恶意应用。例如,当应用调用用户的隐私信息时,可能仅仅只是为了做信息统计后反馈给用户,不存在泄露用户隐私信息的问题,并不能说明该应用为恶意应用。也就是说,待检测应用是否调用敏感函数来确定待检测应用的安全性时,检测精度较低,无法准确地检测出待检测应用是否为恶意应用。
并且,由于敏感函数的数量较多,当通过待检测应用是否调用敏感函数来确定待检测应用的安全性时,如果待检测应用调用的敏感函数较多,沙箱可能会记录大量的函数调用情况,增大了沙箱量体,降低了沙箱检测的速度。
本申请实施例提供一种定点插桩方法,该方法可以利用已知应用训练神经网络模型,并利用训练好的神经网络模型,从该已知应用调用的函数中筛选出桩点函数,该桩点函数即为敏感函数中,与恶意应用存在较大关联性的函数,通过对桩点函数进行插桩,根据待检测应用在沙箱环境中是否调用该桩点函数,来确定该待检测应用是否为恶意应用。
可以看出,通过神经网络模型来筛选出桩点函数,可以从大量敏感函数中确定出与恶意应用关联性较大的函数,这样,只有在应用调用到与恶意应用关联性较大的函数时,电子设备才会确定该应用为恶意应用。也就是说,该方法能够精确定位到与恶意应用关联较大的函数,避免一些与恶意应用关联性较小的函数影响检测结果,提高了沙箱检测待检测应用时的检测精度,且桩点函数仅为敏感函数中的部分函数,电子设备插桩的函数少,减少了沙箱待测过程中,对应用调用的函数的记录次数,减少了检测过程中资源的消耗,加快了电子设备的检测速度,减小了沙箱的量体。
其中,该已知应用表明已知该应用的应用类别和应用运行过程中对函数的调用情况,应用类别可以包括恶意应用和非恶意应用,通过获取该已知应用的行为序列集合即可确定该已知应用运行过程中对函数的调用情况,该行为序列集合包含一个或多个行为序列,行为序列中记录中该已知应用调用的函数。例如,当已知应用在运行过程中,存在发送短信的行为,则存在一个行为序列记录应用发送短信的行为,该行为序列中可以包含与发送短信相关的函数。利用已知应用来训练神经网络可以从恶意应用或非恶意应用所调用的函数中来找出与恶意应用关联较大的函数,提高检测结果的正确性。
本申请实施例提及的沙箱环境,为基于子用户创建的沙箱用户的运行环境。沙箱用户,可以称为影子用户,也是电子设备创建的子用户,与电子设备创建的普通子用户不同的是,沙箱用户不产生用户界面,沙箱用户可以和主用户同时运行,不需要切换用户。沙箱用户可以使用检测服务调用沙箱的功能,完成应用的安全性检测。该沙箱用户拥有独立的运行空间,即沙箱环境,该沙箱环境与电子设备的真实运行环境是隔离的,电子设备运行应用的过程中,生成的数据或文件都可以存储在沙箱环境中,访问的数据也可以是沙箱环境中创建的数据。也就是说,电子设备可以根据应用在沙箱环境中的运行情况分析该应用的安全性,并且应用的运行并不会影响到电子设备的真实环境,这里,电子设备的真实环境是指进程在前台显示和交互的用户的运行空间,例如,主用户的运行空间。具体关于沙箱用户的描述可以参考后续内容,这里先不赘述。
图1示出了本申请实施例提供的电子设备100的硬件结构示意图。
电子设备100可以是手机、平板电脑、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本,以及蜂窝电话、个人数字助理(personal digital assistant,PDA)、增强现实(augmentedreality,AR)设备、虚拟现实(virtual reality,VR)设备、人工智能(artificialintelligence,AI)设备、可穿戴式设备、车载设备、智能家居设备和/或智慧城市设备,本申请实施例对该电子设备的具体类型不作特殊限制。
电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
在一些实施例中,处理器110可用于根据已知应用训练神经网络模型,具体地,处理器110可以利用神经网络处理器来训练神经网络模型。之后,处理器110可以利用训练好的神经网络模型,从该已知应用调用的函数中筛选出桩点函数。另外,处理器110还可以对桩点函数进行插桩,根据待检测应用在沙箱环境中是否调用该桩点函数,来确定该待检测应用是否为恶意应用。具体关于模型的训练、桩点函数的筛选、插桩过程可以参见下述图9以及相关内容。
可以理解的是,模型的训练、桩点函数的筛选可以是电子设备100完成的,也可以是其他设备,例如,服务器,电脑等设备完成的,本申请实施例对定点插桩方法中的部分内容的执行设备不作限定。
控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号解调以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,当模型的训练,和/或,桩点函数的筛选为其他设备完成时,电子设备100可以通过移动通信模块150或者无线通信模块160获取训练好的模型或者桩点函数。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
在一些实施例中,显示屏194可用于显示检测过程中涉及到的提示信息或检测结果,例如,提示信息用于提示用户电子设备100正在检测应用的安全性,检测结果用于指示电子设备100检测的应用是否安全。
内部存储器121可以包括一个或多个随机存取存储器(random access memory,RAM)和一个或多个非易失性存储器(non-volatile memory,NVM)。
在一些实施例中,内部存储器121可以分成多个存储空间,一个用户对应一个存储空间,且各个存储空间之间的数据是隔离的。其中,存在一个存储空间为主用户的运行环境,该运行环境为电子设备100的真实运行环境,电子设备100可以将应用的安装包保存到该存储空间,存在一个存储空间为沙箱用户的运行环境,电子设备100可以将应用安装到该存储空间在,该存储空间可作用应用的运行环境,电子设备100可通过该存储空间检测应用的安全性。
随机存取存储器可以包括静态随机存储器(static random-access memory,SRAM)、动态随机存储器(dynamic random access memory,DRAM)、同步动态随机存储器(synchronous dynamic random access memory,SDRAM)、双倍资料率同步动态随机存取存储器(double data rate synchronous dynamic random access memory,DDR SDRAM,例如第五代DDR SDRAM一般称为DDR5 SDRAM)等;非易失性存储器可以包括磁盘存储器件、快闪存储器(flash memory)。
快闪存储器按照运作原理划分可以包括NOR FLASH、NAND FLASH、3D NAND FLASH等,按照存储单元电位阶数划分可以包括单阶存储单元(single-level cell,SLC)、多阶存储单元(multi-level cell,MLC)、三阶储存单元(triple-level cell,TLC)、四阶储存单元(quad-level cell,QLC)等,按照存储规范划分可以包括通用闪存存储(英文:universalflash storage,UFS)、嵌入式多媒体存储卡(embedded multi media Card,eMMC)等。
随机存取存储器可以由处理器110直接进行读写,可以用于存储操作系统或其他正在运行中的程序的可执行程序(例如机器指令),还可以用于存储用户及应用程序的数据等。
非易失性存储器也可以存储可执行程序和存储用户及应用程序的数据等,可以提前加载到随机存取存储器中,用于处理器110直接进行读写。
外部存储器接口120可以用于连接外部的非易失性存储器,实现扩展电子设备100的存储能力。外部的非易失性存储器通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部的非易失性存储器中。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
距离传感器180F,用于测量距离。电子设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备100可以利用距离传感器180F测距以实现快速对焦。
触摸传感器180K,也称“触控器件”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
本申请实施例提供的检测方法可以应用于多种场景,包括但不限于:
(1)二维码检测场景
在二维码检测场景中,电子设备100可以通过扫描二维码,来触发下载二维码对应的应用程序。由于二维码中对应的应用程序不同于应用商店中的应用程序,黑客可以通过篡改二维码中存储的URL链接,更改二维码对应的应用,使电子设备100扫码后下载恶意应用。
在本申请实施例中,电子设备100可以提供扫码功能,在电子设备100扫码并跳转到二维码中应的应用下载页面后,电子设备100可以接收到用户同意安装的用户操作,响应于该操作,电子设备100将应用的安装包下载到本地,并将该应用安装到沙箱环境中,之后,电子设备100在沙箱环境中触发应用的行为,并根据应用的行为分析该应用是否为恶意应用。最后,电子设备100将检测结果展示给用户,从而用户可以根据检测结果得知该二维码是否安全。
(2)链接检测场景
在链接检测场景中,链接通常可以表现为一串由英文或数字组合成的网址,或者图标、图片等形式,该链接可以响应于用户的点击操作,进入应用下载页面或者直接下载应用。由于链接可以使电子设备100跳转到另外一个页面,黑客可以使链接“重定向”到恶意应用的下载页面,使用户在不知情的情况下下载恶意应用。
在本申请实施例中,电子设备100可以在接收到用户作用于该链接的点击操作后,触发下载链接对应的应用,并将应用安装到沙箱环境中,之后,电子设备100在沙箱环境中触发该应用的行为,并根据该应用的行为分析该应用是否为恶意应用。最后,电子设备100将检测结果展示给用户,从而用户可以根据检测结果得知该链接是否安全。
(3)未知应用检测场景
在未知应用检测场景中,电子设备100可以通过浏览器搜索、好友分享等途径,获取到未知应用的安装包。用户可能仅仅只了解到该未知应用的用途,并不清楚该未知应用的来源或真实内容,该未知应用中可能携带有病毒,贸然点击安装可能会造成用户信息泄露。
在本申请实施例中,电子设备100可以在接收到用户安装该未知应用的操作之后,将该未知应用安装到沙箱环境中,之后,电子设备100在沙箱环境中触发未知应用的行为,并根据该未知应用的行为分析该应用是否为恶意应用。最后,电子设备100将检测结果展示给用户,从而用户可以根据检测结果得知该未知应用是否安全。
可以理解的是,不限于上述提及的场景,本申请实施例提供的检测方法可以应用于任何需要检测应用安全性的场景。
下面以二维码检测场景为例,介绍本申请实施例提供的检测方法。
图2A-图2G示例性示出了本申请实施例涉及的一些用户界面。
图2A示例性示出了电子设备100开启设置应用程序后,设置应用程序提供的默认用户界面21。该用户界面21中可以包含:飞行模式、WiFi、蓝牙、热点、移动网络等多个功能选项。电子设备100可以检测到用户作用于用户界面21中不同功能选项的触控操作,响应于该操作,电子设备100可以开启或关闭飞行模式、WiFi、蓝牙、热点、移动网络等等功能。
其中,用户界面21中包括“安全检测”选项211。“安全检测”选项211用于开启或关闭电子设备100的安全检测功能,安全检测功能可用于在电子设备100扫描二维码时,检测该二维码的安全性。“安全检测”选项211包含设置开关211A,设置开关211A可以检测到用户的触控操作,响应于该操作,电子设备开启或关闭安全检测功能。示例性地,当开关211A显示的主体颜色为白色时,安全检测功能处于关闭状态,当开关211A显示的主体颜色为灰色时,安全检测功能处于开启状态。默认地,安全检测功能初始处于关闭状态。
如图2A所示,电子设备100可以检测到用户作用于设置开关211A的触控操作,响应于该操作,电子设备100开启安全检测功能,设置开关211A的主体颜色由白色变为灰色。这时,电子设备100可以创建沙箱用户,并搭建沙箱用户的沙箱环境,为电子设备100检测应用的安全性做准备。
图2B示例性示出了电子设备100显示主屏幕的用户界面31,该用户界面31中显示了一个放置有应用图标的页面,该页面包括多个应用图标(例如,电话应用图标、设置应用图标、通讯录应用图标、信息应用图标等等)。多个应用图标下方还显示包括有页面指示符,以表明当前显示的页面与其他页面的位置关系。另外,用户界面31中还显示有浏览器缩略框311,其中,浏览器缩略框311包括搜索框311A、“扫一扫”控件311B。
搜索框311A可用于监听触发网页搜索的用户操作。电子设备100可以检测到用户作用于搜索框311A的触控操作,响应于该操作,电子设备100切换到浏览器提供的搜索界面。搜索界面的文本输入区域可以接收到用户输入的关键字,查询并展示与该关键字相关的网页信息。
“扫一扫”控件311B可用于监听触发扫码事件的用户操作。如图2B所示,电子设备100可以检测到用户作用于“扫一扫”控件311B的触控操作,响应于该操作,电子设备100切换到扫码界面,示例性地,该扫码界面可以是指图2C所述的用户界面41。该用户界面可用于显示摄像头采集的图像,并识别图像中包含的二维码。
如图2C所示,用户界面41包括二维码识别区域411、返回控件412、图库控件413。二维码识别区域411用于识别二维码。当电子设备100采集的图像中,二维码位于二维码识别区域411内时,电子设备100可以获取二维码中存储的URL链接。返回控件412用于退出当前用户界面41,显示上一级用户界面(例如用户界面31)。图库控件413可用于开启图库应用程序。响应于作用在图库控件413上的用户操作,例如,点击操作,电子设备100可以开启图库应用程序。用户可以从图库中选择包含二维码的图片,触发电子设备100对该二维码的扫描。从图2C可以看出,当电子设备100检测到采集的图像中包含二维码10,且二维码10位于二维码识别区域411内,电子设备100解析二维码10中存储的URL链接,进入如图2D所述的解析界面,该界面用于触发下载二维码10对应的应用程序A。
如图2D所示,用户界面51示例性示出了二维码对应的解析界面,该解析界面可以包含浏览器应用程序提供的页面,以及悬浮提示窗口511,悬浮提示窗口511用于在电子设备100扫描并解析二维码10后,提示用户安装二维码10指示的应用程序A。悬浮提示窗口511包括关闭控件511A,信息展示区域511B,下载控件511C。其中,关闭控件511A可用于触发关闭悬浮提示窗口511的用户操作。电子设备100可以检测到用户作用于关闭控件511A的触控操作,响应于该操作,电子设备100关闭悬浮提示窗口511,显示浏览器应用程序提供的页面。信息展示区域511B用于展示应用程序A的安装包的文件名和文件大小。下载控件511C可用于触发下载该应用程序A的安装包的用户操作。如图2D所示,电子设备100可以检测到用户作用于下载控件511C的触控操作,响应于该操作,电子设备100下载该应用程序A的安装包,下载控件511C更新为如图2E所示的下载进度条511D。
如图2E所示,下载进度条511D中显示有应用程序A的安装包下载进入,具体地,电子设备100可以将应用程序A下载到主用户对应的环境中。在电子设备100下载完成后,电子设备100可以自动触发该安装包的安装行为,将安装包安装到沙箱环境。在安装完成并获得应用程序A后,电子设备100可以在沙箱环境中检测该应用程序A的安全性,在检测的过程中,电子设备100可以在用户界面51中显示如图2F所述的第一提示信息512。
如图2F所示,第一提示信息515用于提示用户当前电子设备100正在检测该应用程序A是否为恶意应用。在检测的过程中,沙箱用户可以在沙箱环境中触发应用程序A的应用行为,并根据应用行为中是否包含对桩点函数的调用,来判断该应用程序A是否是恶意应用。例如,当电子设备100检测到应用程序A访问通话权限、获取账号等等应用行为,电子设备100将应用程序A认定为恶意应用,之后,电子设备100将第一提示信息512更新为如图2G所示的第二提示信息513。
另外,在电子设备100触发应用程序A的应用行为,即运行应用程序A之前,还包括对桩点函数进行插桩的过程,这样,在应用程序A运行的过程中,电子设备100便可以得知应用程序A是否调用桩点函数。
如图2G所示,第二提示信息513用于提示用户当前下载的安装包存在安全风险,是否继续安装该应用程序A。第二提示信息513还包括确认控件513A、取消控件513B。确认控件513A用于触发安装应用程序A到主用户对应的环境中,取消控件513B用于触发取消安装应用程序A到主用户对应的环境中。如图2G所示,当电子设备100检测到用户作用于确认控件513A的用户操作,电子设备100进入如图2H所示的用户界面61,该用户界面61可以为应用程序A的安装界面。在应用程序A安装完成后,用户即可正常使用应用程序A的功能。
在一些实施例中,当电子设备100检测出该安装包没有安全风险时,电子设备100可以显示应用程序A的安装界面,将应用程序A安装到电子设备100的真实环境中。也就是说,在电子设备100显示如图2F所示的用户界面之后,如果检测到安装包没有安全风险,则直接显示如图2H所示的用户界面。或者,进一步地,电子设备100可以在检测完成后,或显示安装界面时,显示提示信息,提示该安装包没有安全风险。
在一些实施例中,电子设备100除了可以在检测二维码之前,通过设置应用程序开启安全检测功能,还可以在电子设备100接收到用户下载应用程序的用户操作,应用程序下载完成时,或者接收到用户触发安装应用程序的用户操作时,显示提示信息,提示用户是否开启安全检测功能。如图2I所示,在应用程序A下载完成后,电子设备100显示第三提示信息514,该第三提示信息514用于提示用户,当前是否开启安全检测功能,检测该安装包的安全性。其中,第三提示信息514包括确认控件514A、取消控件514B。确认控件514A可用于开启安全检测功能,取消控件514B可用于拒绝开启安全检测功能。当电子设备100检测到用户作用于确认控件514A的触控操作,电子设备100开启安全检测功能,创建沙箱用户并搭建沙箱环境,然后利用沙箱环境检测应用程序A的安全性。示例性地,响应于作用在确认控件514A的触控操作,电子设备100显示如图2F所示的用户界面51。当电子设备100检测到用户作用于取消控件514B的触控操作,响应于该操作,电子设备100直接安装应用程序A,显示如图2H所示的用户界面61。
电子设备可以是搭载iOS、Android、Microsoft或者其它操作系统的便携式终端设备,例如手机、平板电脑、可穿戴设备等,还可以是具有触敏表面或触控面板的膝上型计算机(Laptop)、具有触敏表面或触控面板的台式计算机等非便携式终端设备。电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的Android系统为例,示例性说明电子设备100的软件结构。
图3是本申请实施例的电子设备100的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。如图3所示,应用程序包可以包括设置、扫码应用、相机、图库等应用程序。
设置应用可以提供安全检测开关,该安全检测开关可用于开启或关闭安全检测功能,安全检测功能可用于检测应有的安全性。
扫码应用可以提供扫码功能,该扫码功能能够使电子设备100获取到包含二维码的图片,识别该图片中的二维码,提取二维码中包含的URL链接,使电子设备100显示URL链接对应的页面,例如,应用下载页面、网页等等。
相机可以提供拍摄功能,电子设备100可以利用相机的拍摄功能获取包含二维码的图片。
图库可用于存储相机拍摄获取的包含二维码的图片,在电子设备100使用扫码应用的扫码功能时,电子设备100识别图库中的图片上包含的二维码。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。例如,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。如图3所示,应用程序框架层还可以包括AMS、UMS、PMS、沙箱服务框架、主用户以及沙箱用户。
其中,AMS,即为活动管理服务,作为系统的引导服务,用于管理应用程序层中的各应用程序的启动、切换和调度。UMS,即为用户管理服务,用于创建和删除用户,以及查询用户信息,PMS,即为包管理服务,用于创建用户数据。
沙箱服务框架用于为沙箱用户提供服务,其中,沙箱服务框架可以包括以下几个模块:防逃逸模块、行为触发模块、桩点监控模块、威胁检测模块、结果处理模块、初始化模块、插桩模块、沙箱用户。
防逃逸模块用于为沙箱用户创建与电子设备100的真实运行环境,即主用户或子用户的运行环境相似的沙箱环境,防止恶意应用在沙箱环境中的逃逸。具体地,防逃逸模块主要通过以下一个或两个方面来创建较为真实的环境:1)在沙箱用户创建时进行假数据填充,该假数据包括:联系人、通话记录、备忘录、短信、闹钟信息等等。这样,即使恶意应用或恶意网页窃取了沙箱环境中填充的数据,也不会泄露用户的隐私数据,造成用户的损失。2)安装常见应用,例如,社交类应用、支付类应用、购物类应用等等。这样,避免恶意应用通过安装的应用来判断是否为真实的运行环境时,侦测出其所在的环境不是电子设备100真实的运行环境。
行为触发模块用于在应用安装完成之后,在沙箱环境中遍历该应用的功能路径,触发该应用的行为。这是由于有些恶意应用在安装完成后,可能会潜伏在电子设备100中,不会立刻窃取用户的信息或者破坏电子设备100的环境,行为触发模块可以立即触发应用的行为,方便电子设备100快速检测出应用是否为恶意应用。
桩点监控模块用于对电子设备100内部的桩点函数进行监控,这些桩点函数为利用神经网络筛选出的,与恶意应用的关联性较大的函数。当电子设备100在沙箱环境中运行待检测应用时,桩点监控模块可以根据待检测应用调用桩点函数的情况,生成行为序列,该行为序列可以包括调用时间以及调用的函数等等,电子设备100再将该行为序列传递给威胁检测模块。
威胁检测模块用于对传入的行为序列进行检测,判断应用是否为恶意应用,并将判断的结果传递给结果处理模块。
结果处理模块可用于:1)记录检测文件的哈希值和对应的结果,这样,当下次检测时遇到相同的行为序列表时,即可通过哈希值来判断应用是否恶意,无需再次利用威胁检测模块进行检测。2)将结果输出至前台显示,用户通过显示的结果即可得知该检测的安装包是否安全,以供用户进行下一步的操作,例如,同意或拒绝安装应用,同意或拒绝跳转网页等等。
初始化模块可用于在检测完成之后,将沙箱环境恢复到检测之前,重置检测过程中,恶意应用对沙箱环境造成的破坏,为下一次检测做准备。
插桩模块可用于为电子设备100拥有的桩点函数“做标记”,即插桩,当电子设备100运行的应用调用到“做标记”的函数时,桩点监控模块即可记录该调用行为,以供电子设备100根据该调用行为分析应用的安全性。
在一些实施例中,电子设备100还可以包括神经网络训练模块以及桩点函数筛选模块。神经网络训练模块可用于根据已知应用训练神经网络,桩点函数筛选模块可用于根据神经网络训练模块中训练好的神经网络,从已知应用中调用的函数中筛选出桩点函数,以供插桩模块对桩点函数进行插桩。
沙箱用户作为电子设备100的子用户,包含与其他用户隔离的存储空间,沙箱用户可以调用沙箱服务框架中各模块,将电子设备100需要检测的应用安装到沙箱用户的存储空间中,并在该存储空间中运行该应用,根据该应用调用函数的行为来判断该应用的安全性。
另外,框架层还可以包含其他多个用户,这多个用户可以包含主用户、普通子用户,普通子用户也为电子设备100的子用户,普通子用户可以显示用户界面,使用电子设备的功能。
其中,电子设备100包含的用户中,主用户有且仅有1个,子用户可以为0个、1个或多个,示例性地,如图3所示,主用户、普通子用户以及沙箱用户均为1个,其中主用户的用户ID为User0,普通子用户的用户ID为User11,沙箱用户的用户ID为UserX(X表示除去0、11的任意一个数字),且主用户、普通子用户以及沙箱用户都包含应用数据、进程数据、权限控制、/storage分区、/data分区这几个子模块,/storage分区用于存放该用户的系统文件和数据,/data分区用于存放该用户的应用文件和数据,本申请实施例对这些用户包含的子模块不作限制。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),二维图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
二维图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层包含显示驱动,摄像头驱动,对焦马达驱动,图像传感器驱动,图像信号处理器驱动等等。
下面结合图3所示的电子设备100的软件结构,详细描述二维码检测场景中,电子设备100检测应用的安全性时,内部各模块之间的交互流程。
在电子设备100检测应用安全性的过程中,主要涉及到软件结构中的以下模块:扫码应用、设置、AMS、UMS、PMS、沙箱服务框架、主用户、沙箱用户。
图4示出了电子设备100检测应用的安全性时,内部各模块之间的一种交互流程。
如图4所示,该过程可包括如下步骤:
1.电子设备100通过主用户开启扫码应用。
电子设备100可以默认运行主用户对应的真实环境。在电子设备100运行主用户的过程中,电子设备100可以显示主用户提供的用户界面,该用户界面中可以显示有扫码应用的图标,当电子设备100检测到作用于该图标的用户操作,例如,点击操作时,电子设备100开启扫码应用。
2.扫码应用检测到二维码。
扫码应用可用于提供扫码功能,该扫码功能可用于检测二维码,获取二维码中存储的URL链接。具体地,在本申请实施例中,该URL链接可用于跳转到应用下载页面,在电子设备100跳转到该应用下载页面后,可以触发下载待检测应用的安装包。也是就说,电子设备100可以通过扫描该二维码下载该二维码对应的待检测应用。
其中,该二维码可以位于相机采集的图像中,在扫码应用中,电子设备100可以通过开启相机获取到该二维码,或者,该二维码可以位于图库保存的图片中,在扫码应用中,电子设备100可以通过调用图库中的图片,获得图片中的二维码。
3.电子设备100判断设置应用中的安全检测开关是否开启。
在扫码应用检测到二维码后,电子设备100可以触发判断设置应用中的安全检测开关是否开启。
当安全检测开关未开启时,进入步骤4,电子设备100可以开启安全检测开关,并创建沙箱用户。
当安全检测开关已开启时,此时电子设备100已完成沙箱用户的创建,进入步骤11,电子设备100可以直接触发下载应用的安装包,并利用沙箱用户检测该应用的安全性。
4.电子设备100显示提示信息,提示用户是否开启设置应用中的安全检测开关。
5.电子设备100接收到用户开启检测开关的用户操作。
6.电子设备100通过沙箱服务框架调度AMS。
7.AMS拉起UMS。
8.电子设备100通过UMS创建沙箱用户,构建与主用户隔离的环境。
具体地,电子设备100通过调用AMS,在通过AMS调用UMS,使用UMS中的函数创建沙箱用户,例如,电子设备100可以调用UMS中的createUser()方法创建沙箱用户,具体关于电子设备100创建沙箱用户的过程可以参见下述方法实施例中的相关内容。
9.电子设备100调用沙箱服务框架中的防逃逸模块搭建沙箱环境。
在电子设备100调用UMS完成沙箱用户的创建后,电子设备100还可以调用沙箱服务框架为沙箱用户搭建与电子设备100的真实环境相类似的沙箱环境,该沙箱环境能够模拟电子设备100的真实环境,有效防止恶意应用的逃逸问题。其中,电子设备100可以通过对沙箱用户进行假数据填充,安装常见应用等方式来搭建沙箱环境,具体关于电子设备100搭建沙箱环境的描述可以参见下述方法实施例中的相关内容。
10.电子设备100调用沙箱服务框架中的初始化模块获取沙箱环境中的初始沙箱信息。
该初始沙箱信息记录了电子设备100检测应用之前,沙箱环境的结构、内容。其中,该初始沙箱信息可以记录有沙箱用户中进程、文件、应用、配置等等。具体关于初始沙箱信息的描述可以参见下述方法实施例中的相关内容。
11.电子设备100获取二维码中对应的待检测应用的安装包。
在电子设备100完成沙箱用户的创建,以及沙箱环境的搭建之后,电子设备100可以将步骤2中检测到的二维码对应的安装包下载到主用户的存储空间中。
在一些实施例中,电子设备100也可以将该安装包下载到沙箱用户的存储空间中。
12.电子设备100通过PMS将应用安装到沙箱环境中。
13.电子设备100调用沙箱服务框架中的行为触发模块触发该应用的运行。
在待检测应用安装完成后,电子设备100可以触发待检测应用的运行,模拟用户发起用户操作,作用于待检测应用各个控件,触发待检测应用调用函数的行为,使待检测应用的运行过程发生在沙箱环境中。
14.电子设备100根据待检测应用的运行过程判断待检测应用的安全性。
电子设备100可以根据待检测应用在沙箱环境中对函数的调用行为,来判断待检测应用的安全性。具体地,电子设备100可以调用沙箱服务框架中的桩点监控模块监控待检测应用对敏感函数的调用情况,生成行为序列,该行为序列记录了待检测应用对函数的调用情况,电子设备100可以调用沙箱服务框架中的威胁检测模块对行为序列进行检测,判断待检测应用的安全性。
15.电子设备100调用沙箱服务框架中的结果处理模块输出检测结果。
在电子设备100判断出待检测应用的安全性之后,电子设备100可以通过主用户显示该检测结果,例如,当电子设备100的判断结果为,该待检测应用为恶意应用时,电子设备100可以将该判断结果显示在主用户对应的用户界面中,这样,用户可以得知该待检测应用为恶意应用的检测结果。
16.电子设备100调用沙箱服务框架中的初始化模块初始化沙箱环境。
电子设备100可以在完成待检测应用的安全性检测之后,通过初始化沙箱环境来重置应用检测过程中,沙箱环境中的变化,将沙箱环境还原到检测之前,或者,清除应用对沙箱环境造成的影响。其中,电子设备100可以通过二级还原的方式来初始化沙箱环境,首先,电子设备100进入轻度还原阶段,电子设备100可以在检测结束后,获取沙箱环境中的结束沙箱信息,该结束沙箱信息记录了电子设备100完成应用的检测后,沙箱环境的结构、内容。电子设备100可以根据结束沙箱信息以及步骤10中获得的初始沙箱信息之前的区别,来修补沙箱环境的变化,从而达到轻度还原沙箱环境的效果,如果轻度还原失败,则电子设备100进入重度还原阶段,直接删除沙箱用户,重新创建一个沙箱用户,电子设备100可以利用新创建的沙箱用户的沙箱环境来检测应用的安全性。
17.电子设备100通过PMS将待检测应用安装到主用户对应的存储空间中。
具体地,如果待检测应用的检测结果指示该待检测应用非恶意应用,或者接收到用户选择安装待检测应用的操作,则电子设备100可以将待检测应用安装到主用户对应的存储空间中,该存储空间为电子设备100的真实环境,在待检测应用安装到主用户对应的存储空间后,电子设备100可以在真实环境中运行该待检测应用。
另外,在上述步骤13之前的任意一个步骤,即触发应用的运行之前,电子设备100可以对内部存在的桩点函数进行插桩,以供电子设备100在执行步骤14时,能够根据待检测应用是否调用桩点函数来判断待检测应用的安全性。
图5示例性示出了本申请实施例提供的检测方法的流程示意图。
如图5所示,该方法包括:
S1001、电子设备100开启安全检测开关。
安全检测开关可用于开启电子设备100的安全检测功能,安全检测功能可用于检测应用的安全性。
电子设备100可以通过以下两种方式开启安全检测开关:
1)电子设备100在接收到用户开启安全检测开关的用户操作后开启安全检测开关
示例性地,安全检测开关可以表现为设置应用程序中一个功能选项,用户可以通过电子设备100的设置应用程序找到安全检测开关,开启或关闭安全检测功能。图2A示出了电子设备100开启设置应用程序后,设置应用程序提供的默认用户界面21,该用户界面21中包含有“安全检测”选项211,电子设备100可以检测到用户作用于“安全检测”选项211中的设置开关211A的用户操作,响应于该操作,电子设备100开启或关闭安全检测功能。
在本申请实施例中,设置应用程序提供的默认用户界面21还可以是指第一用户界面,“安全检测”选项211还可以是指第一控件,用户作用于“安全检测”选项211中的设置开关211A的用户操作可以是指第三操作。
示例性地,安全检测开关还可以表现为电子设备100接收到用户操作后显示的提示信息。该用户操作可以是指用户作用于安装控件,安装应用程序的点击操作。该提示信息用于提示用户是否开启安全检测开关。参考图2I,该提示信息可以是指第三提示信息514,在电子设备100接收到作用于确认控件514A的用户操作后,响应于该操作,电子设备100开启安全检测功能。
在本申请实施例中,图2I所示的用户界面51可以是指第二用户界面,第三提示信息514还可以是指第二提示信息,确认控件514A还可以是指第二控件,电子设备100接收到作用于确认控件514A的用户操作还可以是指第三操作。
这样,用户可以在需要检测应用安全性的时候,通过安全检测开关来开启电子设备100的安全检测功能,增强用户选择的灵活性。
2)电子设备100检测到自身进入特定场景时,自动开启安全检测开关
该特定场景可以是指电子设备100接收到用户安装应用程序的用户操作,即将跳转到应用安装界面的场景,或者,该特定场景可以由开发人员预置,例如,该特定场景可以是指扫码场景、应用下载场景、邮件查看场景等等。以扫码场景为例,当电子设备100检测用户开启扫码类应用程序或者识别到二维码时,即可确定电子设备100进入扫码场景。
这样,电子设备100可以严格控制自身的安全性,对于可能威胁到电子设备100安全性的用户操作或运行情况,自动开启安全性检测功能,避免用户数据的泄露和电子设备100环境的破坏等等。
可以理解的是,不限于上述两种方式,本申请实施例还可以包含其他开启安全检测开关的方式,本申请实施例对此不作限制。
值得注意的是,在电子设备100开启待检测应用时,电子设备100运行的是电子设备100的真实环境。
S1002、电子设备100创建沙箱用户并搭建沙箱环境。
用户的创建过程其实就是电子设备100分配一份独立的存储空间,不同用户下的存储空间互不影响,且各存储空间对应电子设备中不同的存储区,这些存储区相互隔离。电子设备100可以通过创建沙箱用户,为检测应用的安全性额外开辟一块运行空间,避免应用在运行过程,对运行空间的破坏影响到电子设备100。
具体地,电子设备100可以先创建沙箱用户,然后再在沙箱用户中搭建沙箱环境。其中:
步骤1、电子设备100创建沙箱用户
具体地,电子设备100可以通过AMS,调度UMS创建沙箱用户。例如,在UMS中调用createUser()方法创建沙箱用户,创建过程具体包括:设置用户信息(用户ID,序列号创建时间等等)、用户目录、以及数据目录等等。
以下,示出了电子设备100创建沙箱用户的代码示例:
步骤2:电子设备100在沙箱用户中搭建沙箱环境
其中,电子设备100可以通过防逃逸模块来搭建沙箱环境。
具体地,电子设备搭建沙箱环境主要包括以下两个部分:1)假数据填充,该假数据包括:联系人、通话记录、备忘录等等。这样,即使恶意应用或恶意网页窃取了沙箱环境中填充的数据,也不会泄露用户的隐私数据,造成用户的损失。2)安装常见应用,例如,社交类应用、支付类应用、购物类应用等等。也就是说,电子设备100可以用过假数据填充,和/或,安装常见应用来模拟真实环境,这样,避免恶意应用通过沙箱环境中的内容来判断是否为真实的运行环境时,侦测出其所在的环境不是电子设备100真实的运行环境。
在本申请实施例中,沙箱环境还可以是指第一沙箱环境。
S1003、电子设备100生成初始沙箱信息。
初始沙箱信息记录了检测之前,沙箱环境中的结构、内容。
电子设备100可以通过以下两种方式触发生成初始沙箱信息:
1)电子设备100在完成沙箱用户的创建以及沙箱环境的搭建后,生成初始沙箱信息。
电子设备100可以在完成沙箱用户的创建以及沙箱环境的搭建后,根据沙箱用户的进程、文件、应用和配置等信息生成初始沙箱信息。这时,电子设备100无需多次生成初始沙箱信息,只有在电子设备100创建沙箱用户、或者搭建沙箱环境时,才会根据沙箱环境生成初始沙箱信息。
具体地,电子设备100可以在检测到用户开启安全检测功能的操作之后,完成沙箱用户的创建以及沙箱环境的搭建,这时,电子设备100再生成沙箱信息。例如,在如图2A所述的用户界面中,电子设备100可以检测到用户作用于设置开关211A的触控操作后,完成沙箱用户的创建以及沙箱环境的搭建,根据搭建的沙箱环境生成初始沙箱信息。或者,在如图2I所述的用户界面中,在电子设备100检测到作用于确认控件514A的触控操作后,完成沙箱用户的创建以及沙箱环境的搭建,根据搭建的沙箱环境生成初始沙箱信息。
2)电子设备100在开始检测时,生成初始沙箱信息。
电子设备100可以在开始检测待检测应用的安全性时,触发生成初始沙箱信息。这样,电子设备100在每次检测应用时,都会触发记录沙箱环境的结构、内容。
具体地,电子设备100可以在,已经完成沙箱用户的创建以及沙箱环境的搭建后,接收到用户安装应用程序的用户操作时,触发生成初始沙箱信息。例如,在如图2E所述的用户界面中,电子设备100可以在完成应用程序A的安装包的下载后,触发生成初始沙箱信息。
3)电子设备100提前预置初始沙箱信息。
由于沙箱环境的进程、文件、应用和配置等信息较为固定,电子设备100无需在创建沙箱用户或者检测时,根据沙箱环境生成初始沙箱信息,电子设备100可以提前预置有沙箱环境对应初始沙箱信息。这样,可以减少电子设备100初始化沙箱环境时,生成初始沙箱信息的时间,加快沙箱环境初始化的速度。
具体地,初始沙箱信息可以记录以下一项或多项:沙箱环境中的进程、文件、应用和配置等等。初始沙箱信息可以包括但不限于以下几项信息:
1)进程信息
该进程信息用于记录沙箱环境中正在运行的应用程序所对应的进程,这些进程描述了应用程序在沙箱环境中的执行活动。例如,当沙箱环境中运行笔记本时,该进程信息中可以找到一个称为Notepad.exe的进程。另外,该进程信息可以包括系统进程信息和用户进程信息,系统进程信息用于记录沙箱环境中系统本身在运行过程中,系统自带的应用对应的进程,用户进程信息用于记录沙箱环境运行用户应用时,该用户应用对应的进程,该用户应用为除去系统应用之外,沙箱环境中存在的应用,例如,沙箱用户通过防逃逸模块安装的常见应用即可称为用户应用。
可以理解的是,在电子设备100检测待检测应用之前,沙箱环境中可能不存在进程,此时进程信息为空,或者,沙箱环境中可能只存在系统进程,例如,与软件更新相关的进程,或者,沙箱环境中同时存在系统进程和应用进程,本申请实施例对此不作限制。
图6示例性示出了电子设备100运行沙箱用户时,电子设备100内部的部分进程。其中,沙箱用户的用户ID为user10,从图6所列举的进程可以看出,沙箱用户的进程为图6中黑线框内列举的进程,其余为主用户的进程,电子设备100可以将黑线框中列举的进程记录到初始沙箱信息中的进程信息中。
2)文件信息
该文件信息用于记录电子设备100检测之前,沙箱环境中的包含的文件。这些文件可用于存放电子设备100检测之前,沙箱环境中的应用所包含的数据。例如,这些文件中可以包含电子设备100模拟真实环境时,通过防逃逸模块填充的假数据所在的文件,即联系人信息相关文件、备忘录相关文件、通话记录相关文件等等。
在一些实施例中,电子设备100在检测待检测应用之前,可以通过路径/data/user/X/查找到沙箱环境中包含的文件。
图7示例性示出了沙箱环境中的部分文件。其中,该沙箱用户的用户ID为user 10,电子设备100可以将图7中列出的文件记录到初始沙箱信息中的文件信息中。
3)应用信息
该应用信息用于记录沙箱环境中初始安装的应用,这些应用可以是指电子设备100为了模拟真实环境,通过防逃逸模块安装的一些常见应用,例如,社交类应用、支付类应用、购物类应用等等。
4)配置信息
该配置信息用于记录沙箱环境中的初始配置,初始配置描述了电子设备100配置给沙箱环境的权限、功能以及功能的开启或关闭状态,其中,权限可以包括对联系人信息的访问权限、对网络的访问权限、对账号信息的访问权限等等,功能可以包括WiFi、蓝牙、GPS等等。沙箱环境的初始配置可以由开发人员确定,例如,沙箱环境的初始配置可以为:沙箱环境的功能包括WiFi和蓝牙,其中WiFi处于关闭状态、蓝牙处于开启状态,权限包括对网络的访问权限等等。
在一些实施例中,电子设备100在检测待检测应用之前,可以通过路径/data/system/users/X/settings_xxx.xml查找到沙箱环境的初始配置。
S1004、响应于下载待检测应用的操作,电子设备100将待检测应用的安装包下载到主用户对应的真实环境中。
电子设备100将待检测应用的安装包下载到主用户对应的真实环境中是指,电子设备100将该应用的安装包保存到主用户存储文件的位置。这里,待检测应用的安装包可以为APK格式的文件。另外,该安装包是在电子设备100运行真实环境,响应于下载待检测应用的操作时获取的,也就是说,该安装包时通过电子设备100的真实环境获取的。
该操作可以是指作用于待检测应用的下载控件的用户操作,响应于该操作,电子设备100开始下载待检测应用对应的安装包。
示例性地,该待检测应用可以是指图2D所述的应用程序A,该操作可以是指图2D所示实施例中作用于下载控件511C的用户操作。
在一些实施例中,电子设备100还可以将待检测应用的安装包下载到沙箱环境中。
在本申请实施例中,主用户对应的真实环境还可以是指主用户空间。
可以理解的是,该安装包除了可以通过图2C所示的电子设备100扫描二维码中获取,该安装包还可以通过应用商店或者网页下载获取,或者通过跳转到链接对应的应用下载界面触发下载待检测应用的安装包,本申请实施例对电子设备100获取安装包的方式不做限制。
S1005、电子设备100将待检测应用安装到沙箱环境中。
电子设备100将待检测应用安装到沙箱环境中是指,电子设备100将该待检测应用的文件保存到沙箱用户存储文件的位置。具体地,电子设备100安装待检测应用的过程可以是指,电子设备100解压缩待检测应用的安装包,获得多个应用文件,这些应用文件分别对应不同的存储位置,电子设备100将这些文件保存到沙箱用户的存储空间中对应的存储位置。
在电子设备100将待检测应用安装到沙箱环境的过程中,该安装过程在后台进行,不对用户显示,电子设备100的用户界面中可以显示提示信息,该提示信息用于提示用户电子设备100正在检测该应用的安全性。
示例性地,该提示信息可以是指图2F所示实施例中的第一提示信息512。
电子设备100安装待检测应用的触发方式可以包括但不限于以下几种情况:
1)电子设备100接收到用户安装待检测应用的操作
该操作可以是指作用于待检测应用的安装包的安装操作,响应于该操作,电子设备100安装该待检测应用,并将待检测应用安装到沙箱用户中。
这时,步骤S1004为可选的步骤,电子设备100可以通过其他方式获得待检测应用的安装包,例如,电子设备100通过外部存储器接口120,从非易失性存储器中获得待检测应用的安装包,电子设备100可以接收到用户作用于该安装包的安装操作,将待检测应用安装到沙箱用户中。
2)电子设备100自动触发应用的安装
其中,电子设备100可以在完成待检测应用的安装后自动触发待检测应用的安装,并将待检测应用安装到沙箱环境中。
这时,步骤S1004和步骤S1005可以整合为一个步骤,响应于下载应用的操作,电子设备100可以将在待检测应用的安装包下载完成之后,自动将待检测应用安装到沙箱用户中。
可以理解的,上述步骤S1004的操作不限于下载应用的操作,例如,当电子设备100扫码后自动触发待检测应用的下载和安装,该操作还可以是指用户扫描二维码的用户操作。又例如,当电子设备100接收到用户作用于链接的点击操作,响应于该操作,电子设备100自动触发待检测应用的下载和安装,该操作可以是指用户作用于链接的点击操作。本申请实施例对该操作不作限制。
具体实现中,在电子设备100下载待检测应用时,沙箱服务框架的权限属于系统权限(android:sharedUserId="android.uid.system"),电子设备100可以将待检测应用的安装包下载到主用户保存文件的位置,即下载到主用户的真实环境中,或者,电子设备100可以将待检测应用的安装包下载到子用户保存文件的位置中,其中,该子用户可以是指沙箱用户或普通子用户。在电子设备100安装待检测应用时,电子设备100可以调用PMS.installPackageAsUser(),或者执行adb命令将待检测应用安装到指定的用户,这里,电子设备100可以通过指定沙箱用户的用户ID将应用安装到沙箱环境中。
S1006、电子设备100触发待检测应用的行为。
电子设备100触发待检测应用的行为是指电子设备100在沙箱环境中运行该待检测应用。在待检测应用安装完成后,电子设备100需要遍历待检测应用的功能路径,触发待检测应用的行为,该行为是指待检测应用运行的过程中,对电子设备100中的函数的调用行为。这些函数的调用行为表明了待检测应用的功能调用情况。具体实现中,电子设备100触发待检测应用的行为的过程可以是指电子设备100遍历待检测应用提供的各个图层,模拟用户发起用户操作,作用于待检测应用各个控件,触发待检测应用的功能的过程。在待检测应用的功能被触发时,待检测应用会通过调用函数该触发操作。此时,待检测应用调用函数的操作即为应用的行为。
其中,电子设备100可以使用行为触发模块来触发应用的行为。
电子设备100触发待检测应用的行为是因为待检测应用在安装完成后,可能不会立即发起待检测应用的行为,这时,电子设备100无法及时根据待检测应用的行为来分析待检测应用的安全性,通过触发待检测应用的行为,能够使电子设备100在较短的时间内根据应用的行为判断该应用是否为恶意应用,加快电子设备100的检测速度。
S1007、电子设备100生成行为序列。
根据待检测应用对函数的调用行为,电子设备100可以生成行为序列。这些行为序列表包含了该待检测应用在运行的过程中,对插桩函数的调用记录。具体地,电子设备100可以通过插桩模块对电子设备100内部的函数“做标记”,这样,当电子设备100运行的应用调用到“做标记”的函数时,即可记录该函数的调用情况,生成行为序列。进一步地,电子设备100可以利用插桩模块,对电子设备100的桩点函数“做标记”,当待检测应用调用到桩点函数时,电子设备100即可记录应用对桩点函数的调用行为。电子设备100可以通过桩点监控模块,生成行为序列。
其中,桩点函数为敏感函数中,与恶意应用存在较大关联性的函数,敏感函数是指应用执行敏感行为时调用的函数,敏感行为可以是指比如获取电子设备的设备信息、向用户发送短信、读取电子设备上的通讯录、获取用户的位置信息、使用电子设备的摄像头、监听用户的通话等等可能涉及泄露用户个人信息、破坏系统环境等风险的行为。敏感函数可以由研发人员预先定义,不同的敏感函数还可以对应不同的等级,等级越高,函数越容易涉及用户的隐私,当该函数被调用时,说明该待检测应用是恶意函数的可能性越大。
桩点函数可以由训练好的神经网络模型,从已知应用调用的函数中筛选获得,该训练好的神经网络模型是由该已知应用作为样本,训练神经网络模型获得。该已知应用是指已知应用为恶意应用还是非恶意应用。具体关于神经网络的训练、桩点函数的筛选可以参见后续图9及其相关内容,这里先不赘述。
S1008、电子设备100根据行为序列判断该待检测应用的安全性。
待检测应用的安全性可以是指待检测应用是否为恶意应用,或非安全应用。具体地,电子设备100可以根据行为序列中调用的桩点函数以及调用的各桩点函数之间的关联性来判断该待检测应用是否恶意。也就是说,待检测应用调用了预设函数时,电子设备100可以确定该待检测应用为恶意应用,待检测应用未调用预设函数时,电子设备100可以确定该待检测应用不是恶意应用,或该待检测应用为安全应用。
电子设备100可以使用威胁检测模块来判断待检测应用是否恶意。另外,在电子设备未开启安全检测开关时,桩点监控模块不会对应用进行监控,这样可以减少资源的浪费。
S1009、电子设备100记录待检测应用的安装包对应的标识以及检测结果。
该标识可用于唯一确定该安装包,例如,该标识可以为该安装包对应的哈希值,电子设备100可以利用MD5、CRC等哈希算法来计算该安装包的哈希值。检测结果可以指示该待检测应用是否为恶意应用。
电子设备100可以在检测完成之后,计算此次检测的安装包的哈希值,并将该哈希值以及此次检测结果保存起来。这样,在下一次检测时,如果获取到相同的安装包,电子设备100可以直接根据安装包的哈希值以及检测结果确定当前检测的安装包对应的应用是否安全,提升电子设备100检测的效率,减少重复检测过程中,不必要的时间浪费。
这就是说,在电子设备100执行步骤S1005之前,还包括:电子设备100获取待检测应用的安装包,并计算该安装包的哈希值,判断电子设备100中是否存在相同的哈希值,如果存在,则电子设备100找到该哈希值对应的检测结果,再根据该检测结果判断是直接安装,还是显示检测结果并提供用户选择的结果;如果不存在,电子设备100再将该待检测应用安装到沙箱用户中。
S1010、在待检测应用检测完成后,电子设备100生成结束沙箱信息。
在电子设备100检测完成后,沙箱环境相比与检测之前,可能会存在以下一种或多种情况:
1)沙箱环境中存在不变的内容。
2)沙箱环境中存在丢失的内容。
3)沙箱环境中存在新增的内容。
4)沙箱环境中存在更改的内容。
沙箱环境中存在内容的变化,这是由于待检测应用在沙箱环境中的运行,会对沙箱用户的沙箱环境造成影响,例如,产生额外数据、修改配置等等,从而造成了沙箱环境的变化。这时,电子设备100可以通过对比检测前和检测前的沙箱环境来具体确定沙箱环境的变化情况。即,电子设备100可以在检测完成后,通过生成结束沙箱信息,来记录沙箱环境的结构、内容,之后,通过对比初始沙箱信息以及结束沙箱信息即可确定沙箱环境中的变化情况。
电子设备100可以在以下任意一种情况下,生成结束沙箱信息:
1)电子设备100在每次检测完成后,生成结束沙箱信息
这样,电子设备100不区分待检测应用是否为恶意应用,在每次检测完成之后生成结束沙箱信息,并根据初始沙箱信息和结束沙箱信息的区别还原沙箱环境,保证电子设备100每次检测时,沙箱环境都是固定的结构和内容。
2)当电子设备100检测到待检测应用为恶意应用时,生成结束沙箱信息
这是由于只有在电子设备100运行恶意应用时,沙箱环境中发生的变化才会更大,或沙箱环境才会遭到破坏,会影响到电子设备100下一次的检测过程。这样,电子设备不需要在每次检测完成后都还原沙箱环境,减少系统资源的浪费,提升沙箱检测的效率。
可以理解的是,不限于上述情况,电子设备100该可以周期性,或根据用户的操作来确定何时生成结束沙箱信息来还原沙箱,本申请实施例对此不作限制。
结束沙箱信息描述了电子设备100完成检测之后,沙箱环境的结构、内容。具体地,结束沙箱信息类似于初始沙箱信息,也可以包括但不限于以下一项或多项:
1)进程信息
与初始沙箱信息中的进程信息相同,结束沙箱信息中的进程信息同样用于记录沙箱环境中正在运行的应用程序所对应的进程。不同的是,结束沙箱信息中的进程信息相比于初始沙箱信息中的进程信息可能存在不变、新增或消失的进程。
其中,当结束沙箱信息中的进程信息与初始沙箱信息中的进程信息相同时,则说明电子设备100检测结束后与检测前的进程相同。
当结束沙箱信息中的进程信息存在新增的进程时,新增的进程可能来源于待检测应用对应的进程,或者,来源于待检测应用拉起的其他应用对应的进程,例如,当待检测应用为社交类应用,在社交类应用运行时,该社交类应用可能会触发开启相机应用,则此时电子设备100运行的进程中,包含社交类应用对应的进程以及相机应用对应的进程。
当结束沙箱信息中的进程信息,相比于初始沙箱信息中的进程信息存在消失的进程时,消失的进程可以为沙箱环境检测待检测应用之前,运行的其他应用对应的进程,例如该其他应用可以是指杀毒软件,当待检测应用携带OSO病毒时,该病毒可以采用镜像劫持技术,在系统中更改程序执行时的指向,使电子设备100由原本运行的杀毒软件,更改为运行待检测应用。
2)文件信息
该文件信息用于记录检测完成之后,沙箱环境中的包含的文件。这些文件可用于存放电子设备100检测完成后,沙箱环境中的应用所包含的数据。相比于初始沙箱信息中记录的文件,结束沙箱信息中可能存在不变、新增、消失或更改的文件。
其中,结束沙箱信息中可能存在新增的文件是指,待检测应用在检测过程中可能会额外产生一些数据,例如,包括应用内容数据、应用缓存数据、应用配置数据等等。那么,此时结束沙箱信息中的文件信息相比于初始沙箱信息中的文件信息,会记录有新增的文件,这些文件可以包含应用内容数据、应用缓存数据、应用配置数据等等。
结束沙箱信息中可能存在消失的文件是指,待检测应用在检测过程中可能会删除沙箱环境中原本配置的一些文件,例如联系人信息相关文件、备忘录相关文件、通话记录相关文件等等,则此时结束沙箱信息中的文件信息,相比于初始沙箱信息中的文件信息中记录的文件,会缺少部分文件。
结束沙箱信息中可能存在更改的文件是指,待检测应用在检测过程中可能会更改沙箱环境中原本配置的一些文件,例如,更改联系人信息、备忘录、通话记录等等,则此时结束沙箱信息中的文件信息记录的文件,可以与初始沙箱信息中的文件信息记录的文件相同,但是文件中包含的数据不同。
3)应用信息
该应用信息用于记录检测结束后,沙箱环境中安装的应用。相比于初始沙箱信息中记录的应用,结束沙箱信息中可能存在不变、新增或消失的应用。
其中,结束沙箱信息中存在不变的应用是指,结束沙箱信息中的应用信息记录的应用,与初始沙箱信息中的应用信息记录的应用相同。
结束沙箱信息中存在新增的应用时,该新增的应用可以为待检测应用,或者,进一步,该新增的应用还包括其他应用,该其他应用可以为电子设备100安装待检测应用时,该待检测应用绑定的应用。
结束沙箱信息中存在消失的应用时,该消失的应用可以为电子设备100搭建沙箱环境时,通过防逃逸模块安装的一些常见应用,例如,社交类应用、支付类应用、购物类应用等等。
4)配置信息
该配置信息用于记录检测结束后,沙箱环境中的配置。相比于初始沙箱信息中记录的配置,结束沙箱信息中可能存在不变或变化的配置。
结束沙箱信息中存在不变的配置是指结束沙箱信息中的配置信息,与初始沙箱信息中的配置信息相同。
结束沙箱信息中存在变化的配置是指结束沙箱信息中的配置信息与初始沙箱信息中的配置信息不同,其中,可能存在配置信息记录的配置增多、减少或者配置内容的更改等情况。这是由于,当待检测应用为恶意应用时,可能会修改沙箱环境的初始配置,例如,当待检测应用绑定有其他搜索类应用时,该待检测应用可能会篡改沙箱环境中默认配置的搜索类应用,将该默认配置的搜索类应用更改为待检测应用绑定的其他搜索类应用。
S1011、电子设备100根据初始沙箱信息和结束沙箱信息初始化沙箱环境。
电子设备100初始化沙箱环境可以是指电子设备100将检测后的沙箱环境的结构、内容还原到检测前,从而重置电子设备100检测待检测应用的过程中,待检测应用在沙箱环境中的运行,对沙箱环境造成的影响。具体地,图8示出了步骤S1011的详细过程。如图8所示,该详细过程包括:
S201、电子设备100根据初始沙箱信息和结束沙箱信息获得区别信息。
该区别信息记录了结束沙箱信息和初始沙箱信息的区别。其中,该区别信息可以记录有检测后的沙箱环境,相比于检测前的沙箱环境,新增、丢失或更改的内容。
具体地,区别信息可以包括以下一项或多项:
1)区别进程信息
该区别进程信息可以记录有检测后的沙箱环境,相比于检测前的沙箱环境,新增或丢失的进程。其中,该新增的进程为结束沙箱信息中记录的进程,该丢失的进程为初始沙箱信息中记录的进程。
2)区别文件信息
该区别进程信息可以记录有检测后的沙箱环境,相比于检测前的沙箱环境,新增、丢失或更改的文件。其中,该新增的文件为结束沙箱信息中记录的进程,该丢失或更改的文件为初始沙箱信息中记录的文件。
3)区别应用信息
该区别应用信息可以记录有检测后的沙箱环境,相比于检测前的沙箱环境,新增或丢失的应用。其中,该新增的应用为结束沙箱信息中记录的应用,该丢失的应用为初始沙箱信息中记录的应用。
4)区别配置信息
该区别配置信息可以记录有检测后的沙箱环境,相比于检测前的沙箱环境,变化的配置,另外,该区别配置信息为初始沙箱信息中记录的配置,相比于结束沙箱信息,变化的配置。换句话说,区别配置信息中记录的变化的配置来源于初始沙箱信息中记录的配置。
另外,区别信息中除了包括上述四项信息之外,区别信息中还包括标识信息,该标识信息用于标记区别信息中记录的区别,具体为结束沙箱信息,相比于初始沙箱信息,新增、丢失或更改的内容。例如,当区别进程信息中包括新增的进程,则区别信息中除了包含该新增的进程,还包括该新增的进程的标识信息,电子设备100根据该标识信息即可确定该进程为沙箱环境在检测结束后,相比于检测前新增的进程。
在电子设备100获取区别信息的具体实现中,由于检测过程中,沙箱环境的进程、文件和应用都可能存在新增和丢失的情况,电子设备100可以根据初始沙箱信息和结束沙箱信息中列举的进程、文件、应用,来确定新增或丢失的进程、文件、应用。进一步地,由于文件的内容也可能存在更改的情况,这时仅仅通过对比初始沙箱信息和结束沙箱信息中记录的文件无法确定文件的内容是否更改。电子设备100可以计算检测前和检测后,沙箱环境中各文件的哈希值,通过对比初始沙箱信息以及结束沙箱信息中,相同文件的哈希值,即可确定文件的内容是否发生了更改。具体地,当哈希值相同时,则说明该文件的内容没有发生变化,当哈希值不同时,则说明该文件的内容在检测结束后,相比于检测前发生了内容上的更改。类似的,当沙箱环境的配置发生变化时,电子设备100可以根据配置的哈希值来确定结束沙箱信息相比于初始沙箱信息中,哪些配置发生了变化。
S202、电子设备100根据区别信息还原沙箱环境。
电子设备100还原沙箱环境是为了让沙箱环境的结构和内容能够恢复到检测之前。其中,电子设备100根据区别信息还原沙箱环境为轻度还原阶段。电子设备100可以根据区别信息中记录的新增、丢失或更改的内容,删除、补充或替换相应的内容,从而达到还原沙箱环境的效果。
具体实现中,当标识信息指示为新增内容时,电子设备100将该标识信息对应的区别内容从沙箱环境中删除,当标识信息指示为丢失内容时,电子设备100将该标识信息对应的区别内容补充到沙箱环境中,当标识信息指示为更改的内容时,电子设备100将沙箱环境中原本对应的内容替换为该标识信息对应的区别内容。
在一些实施例中,电子设备100可以根据区别进程信息,关闭或开启检测完成后的沙箱环境中的进程;这时,区别进程信息中记录有沙箱环境,检测后相对于检测前,新增或减少的进程。电子设备100根据区别文件信息,删除或增加检测完成后的沙箱环境中的文件;这时,区别文件信息中记录有沙箱环境,检测后相对于检测前,新增或减少的文件。电子设备100根据区别应用信息,卸载或安装检测完成后的沙箱环境中的应用;这时,区别应用信息中记录有沙箱环境,检测后相对于检测前,新增或减少的应用。电子设备根据区别配置信息,替换检测完成后的沙箱环境中的配置。这时,区别配置信息中记录有沙箱环境,检测后相对于检测前,变化的配置。可以看出,进程、文件和应用都是记录新增或减少的内容,而配置是记录变化的内容,这是因为进程、文件和应用的变化一般是数量上的变化,内容上的变化较少,电子设备100可以直接通过删除或增加的方式来处理沙箱环境中新增或丢失的内容,而配置的变化一般是内容上的变化,不容易查找,所以,电子设备100可以直接通过,将沙箱环境中的配置替换成检测前的配置的方式来还原沙箱环境。
在一些实施例中,电子设备100可以按照先还原进程后还原静态内容(例如,应用、文件、配置)的顺序,还原沙箱环境。具体地,电子设备100可以先根据区别进程信息还原沙箱环境中的进程,再根据区别应用信息还原沙箱环境中的应用,之后在根据区别文件信息还原沙箱环境中的文件,最后再根据区别配置信息还原沙箱环境中的配置。可以理解的是,还原顺序可以预先设定,本申请实施例对沙箱环境的还原顺序不作限制。
进一步地,由于进程与文件存在关联关系,在电子设备100拉起进程或删除进程时,沙箱环境中可能会出现某些文件消失或新增某些文件的情况,这时,区别文件信息中记录的文件就不再是当前沙箱环境与检测前的沙箱环境的区别。那么,电子设备100可以在检测结束后,先确定结束沙箱信息中的进程信息,再根据结束沙箱信息和初始沙箱信息中的进程信息确定区别进程信息,在根据区别进程信息还原进程之后,电子设备100再确定结束沙箱信息中的其他信息,包括:文件信息、应用信息、配置信息等等,再确定这些其他信息在结束沙箱信息和初始沙箱信息中的区别信息,并根据该区别信息还原沙箱中的文件、应用、配置等等。
在一些实施例中,区别信息中不包括区别配置信息,电子设备100可以直接将沙箱环境中的配置替换为初始沙箱信息中的配置信息记录的配置。这时由于检测结束后,沙箱环境的配置发生的变化,往往出现在配置的内容上,这相比于增加配置或丢失配置更不易发现。这时,电子设备100可以不用比较检测前和检测后的沙箱环境的配置,直接对沙箱环境的配置进行替换,减少电子设备100比较检测前和检测后的沙箱环境的结构、内容的时间和工作量,并且,相比于根据区别来还原配置,直接替换配置更能保证还原的准确性。可以理解的是,不限于沙箱环境的配置,其他内容,例如进程、文件、应用等等中的一个或多个也可以按照直接替换的方式进行还原,本申请实施例对此不作限制。
可以看出,电子设备100直接根据沙箱环境检测前和检测后的区别,来还原沙箱环境,当检测前和检测后的沙箱环境区别较小时,电子设备100可以花费较少的时间在还原沙箱环境上,使沙箱环境能够尽快地为下一次应用的检测做准备。
S203、电子设备100再次生成结束沙箱信息。
在电子设备100根据区别信息还原沙箱之后,电子设备100可以检查该还原过程是否成功,那么,电子设备100可以对比还原后的沙箱环境是否与检测前的沙箱环境一致,从而确定该还原过程是否成功。这时,电子设备100可以再次生成结束沙箱信息。
具体关于再次生成的结束沙箱信息包含的内容可以参考前述初始沙箱信息和结束沙箱信息的相关描述。
S204、电子设备100判断再次生成的结束沙箱信息与初始沙箱信息是否一致。
如果电子设备100判断再次生成的结束沙箱信息与初始沙箱信息一致,则说明沙箱环境轻度还原成功,此时沙箱环境的结构、内容已经恢复到检测前的沙箱环境的结构、内容。如果电子设备100判断再次生成的结束沙箱信息与初始沙箱信息不一致,则说明电子设备100轻度还原失败,电子设备100可以执行步骤S1014,进入重度还原阶段。
S205、电子设备100删除该沙箱用户,并重新创建沙箱用户,搭建沙箱环境。
电子设备100轻度还原失败,可能存在以下几种情况:
1)沙箱环境中存在无法删除的进程
当待检测应用为恶意应用时,该恶意应用可能会在电子设备100生成结束沙箱信息时,将自身的进程伪装成沙箱环境中的系统进程,或者,隐藏自身的进程,导致电子设备100没有将该恶意应用的进程记录到区别进程信息中,使电子设备100无法删除该进程。
2)沙箱环境中存在无法卸载的应用
当待检测应用为恶意应用时,在电子设备100卸载该恶意应用时,恶意应用可能会触发恶意程序,在系统中安装大量文件,导致电子设备100无法卸载该恶意应用。
3)沙箱环境中存在无法修复的文件
当待检测应用为恶意应用时,在恶意应用运行的过程中,可能会造成文件的严重损坏,导致电子设备100确定的区别文件信息有遗漏,导致电子设备100轻度还原过程中,文件无法完全恢复。
不限于上述提及的几种情况,还可能存在其他情况导致电子设备100轻度还原失败,本申请实施例对此不作限制。
在电子设备100删除该沙箱用户的具体实现中,电子设备100可以调用removeUser()方法来删除该沙箱用户,从而直接删除沙箱用户的沙箱环境中的所有内容,然后重新创建沙箱用户,搭建新的沙箱环境。具体地,电子设备100中的初始化模块向主用户发送删除沙箱用户的指令,主用户根据该指令调用UMS删除沙箱用户,在沙箱用户删除完成后,主用户再调用UMS创建新的沙箱用户,并利用防逃逸模搭建沙箱环境。
具体关于电子设备100创建沙箱用户以及搭建沙箱环境的过程可以参考前述内容,这里不再赘述。
可以看出,电子设备100可以采用二级还原的方法,在电子设备完成检测之后,首先对沙箱进行轻度还原,如果轻度还原失败,电子设备再对沙箱进行重度还原。能够根据沙箱还原的情况来选择使用轻度还原还是重度还原,在尽可能地减少沙箱还原过程中所消耗的时间的前提下,保证还原的成功,有效提高沙箱还原的效率。
S1012、电子设备100判断是否安装该待检测应用。
电子设备100可以通过以下两种方式判断是否安装该待检测应用:
1)电子设备100根据检测结果判断是否安装该待检测应用
具体地,当检测结果指示该待检测应用为恶意应用时,电子设备100判断不安装该待检测应用,当检测结果指示该待检测应用不是恶意应用时,电子设备100判断安装该待检测应用。这样,电子设备100无需用户确定,自行根据安装包是否安全来判断是否安装该待检测应用,避免了恶意应用对电子设备100的威胁。
2)电子设备100根据用户的选择判断是否安装该应用
电子设备100可以将是否安装待检测应用的选择权交由用户,由用户来决定是否安装该待检测应用。这是由于,即使电子设备100检测出该待检测应用为恶意应用,该待检测应用可能是用户自己开发的应用,用户仍然想要安装该待检测应用,或者,即使电子设备100检测出该待检测应用不是恶意应用,用户也可以改变想法,选择不再安装该待检测应用。这样,由用户来确定是否该待检测应用,增加了用户安装应用的自由性,为用户提供更加灵活的选择。
在该情况下,电子设备100可以显示提示信息,该提示信息包括检测结果,以供用户根据该检测结果判断是否安装该待检测应用,该提示信息还能够响应于用户的操作,触发电子设备100是否安装该待检测应用。其中,该提示信息还可以是指第一提示信息。
示例性地,参见图2G,该提示信息可以为第二提示信息513,该第二提示信息513用于提示用户该待检测应用对应的安装包存在安全风险,是否继续安装,另外,第二提示信息513中还包括确认控件513A、取消控件513B,这两个控件即为电子设备100提供的可供用户操作的接口,用于用户选择是否安装该待检测应用。
S1013、电子设备100安装该待检测应用。
电子设备100安装该待检测应用可以是指电子设备100直接安装该待检测应用,或者,在接收到用户触发安装待检测应用的操作后,响应于该操作,安装该待检测应用。其中,用户触发安装待检测应用的操作还可以是指第一操作或者第二操作。
具体实现中,电子设备100可以调用PMS.installPackageAsUser(),或者执行adb命令将待检测应用安装到指定的用户,例如,电子设备100可以将待检测应用安装到主用户的存储空间中,这时,电子设备100可以不指定用户ID或者指定用户ID为User0即可将待检测应用安装到主用户的真实环境中。或者,电子设备100可以指定用户ID为普通子用户的ID,例如,User11,这样,电子设备100可以将待检测应用安装到子用户的存储空间中。在安装完成后,该应用的图标可以出现在电子设备100的用户界面中,当电子设备100接收到用户作用于该图标的用户操作时,响应于该操作,电子设备100即可打开该应用。这样,该应用可以通过电子设备100的用户界面呈现给用户,用户能够在检测完成后使用该应用的功能。
S1014、电子设备100不安装该待检测应用。
电子设备100不安装该待检测应用可以是指电子设备100检测到该待检测应用为恶意应用,拒绝安装该待检测应用,或者,在接收到用户触发拒绝安装的操作后,响应于该操作,拒绝安装该待检测应用。
在一些实施例中,进一步地,当电子设备100不安装该待检测应用,电子设备100可以将该待检测应用的安装包删除,释放电子设备100的内存空间。
可以理解的是,本申请实施例提供的检测方法不限于上述提及的检测场景,例如,还可以应用到应用市场或者网页上下载应用的场景,另外,不限于对安装包的检测,该方法还可应用于网页、文件、代码等的安全性检测,本申请实施例对此不作限制。
图9示例性示出了本申请实施例提供的定点插桩方法的流程示意图。
如图9所示,该定点插桩方法包括:
阶段一:训练模型
S301、获取多个已知应用数据,其中,已知应用数据包括行为序列集合和各个行为序列对应的行为类型,以及已知应用的应用类型。
这多个已知应用数据为训练神经网络模型的训练样本。该已知应用表明已知该应用的应用类别和应用运行过程中对函数的调用情况,其中,应用类型包括:恶意应用和非恶意应用。行为序列集合记录了已知应用运行过程中,调用的函数,行为序列集合包含多个行为序列,一个行为序列可以包含该已知应用运行一个功能时,调用的函数。例如,当已知应用在运行过程中,存在发送短信的功能,则存在一个行为序列记录应用发送短信的行为,该行为序列中可以包含与发送短信相关的函数。行为类型包括:正常行为、与恶意结果相关行为、与恶意结果无关行为、恶意行为。这些已知应用数据可以由开发人员在测试环境中,运行这些已知应用,分析这些已知应用调用的函数获得。
在本申请实施例中,与恶意结果相关行为、与恶意结果无关行为、恶意行为还可以分别是指与非安全相关行为,与非安全无关行为,非安全行为,恶意应用还可以是指非安全应用,非恶意应用还可以是指安全应用。行为序列的行为类型描述了该行为序列与应用类型的关联度。其中,所述正常行为为安全应用执行的行为,所述非安全行为为非安全应用执行的所述敏感行为,所述非安全无关行为为非安全应用中,与所述敏感行为无关的行为,所述非安全相关行为为非安全应用中,与所述敏感行为相关的行为,所述正常行为、与非安全无关行为、与非安全相关行为、非安全行为与非安全应用的关联度逐渐增大。
S302、初始化神经网络。
初始化神经网络可以包括但不限于以下内容:
1)确定神经网络的输入节点单位向量为行为序列和行为类型。
2)确定神经网络的输出节点单位向量为应用类型。
3)确定神经网络的预设误差范围,例如5%~10%。
在本申请实施例中,神经网络可以具体采用Elman神经网络。图10示例性示出了Elman神经网络的模型结构。Elman神经网络一般分为四层:输入层、中间层(隐含层)、承接层、输出层。其输入层、隐含层和输出层的连接类似于前馈网络,输入层的单元仅起信号传输作用,输出层单元起线性加权作用。隐含层单元的传递函数可采用线性或非线性函数,例如,采用signmoid、tansig非线性函数。承接层又称为上下文层或状态层,它用来记忆隐含层单元前一时刻的输出值,可以认为是一个一步延时算子。
如图10所示,Elman神经网络的非线性状态空间表达式为:
y(k)=g(w3x(k)+b2) 公式2
x(k)=f(w3xc(k)+w2(u(k-1))+b1) 公式3
xc(k)=x(k-1) 公式4
其中,k表示时刻,y,x,u,xc分别表示1维输出节点向量,m维隐含节点单位向量,n维输入向量和m维反馈状态向量。w3,w2,w1分别表示隐含层到输出层、输入层到隐含层、承接层到隐含层的连接权值矩阵。f(.)为隐含层神经元的传递函数,g(.)为输出层神经元的传递函数。b1和b2分别为输入层和隐含层的阈值。神经网络训练的过程就是用网络的实际输出值与输出样本值的差异来修改权值w3,w2,w1和阈值b1,b2,使得网络输出层的误差平方和最小。
S303、对已知应用数据进行归一化处理。
具体地,将已知应用数据进行归一化处理是指将已知应用数据包括行为序列集合和各个行为序列对应的行为类型,以及已知应用的应用类型转化成机器能够识别的数值,例如,将已知应用数据转化成(0,1)之间的数值。
其中,归一化处理的公式可以为:
Xk为归一化后的数据,xk为归一化前的数据,xmax为该类数据中的最大值,xmin为该类数据中的最小值。
S304、根据处理后的数据对初始化的神经网络进行训练,从而获得训练好的模型。
将已知应用数据分为训练数据和测试数据。训练数据用于训练模型,计算模型的权值和阈值,测试数据用于在确定权值和阈值后的模型上,确定该模型的误差。当模型的误差未处于预设误差范围内,则继续使用训练数据训练模型,更新模型的权值和阈值,直到测试数据确定的模型的误差位于预设误差范围内,则此时获得的权值和阈值为最终模型的权值和阈值。
其中,在训练过程中,可以采用试凑法确定隐含层的节点数。
阶段二:确定桩点函数
S305、利用训练好的模型从这多个已知应用中筛选出关联度较大的行为序列。
关联度较大的行为序列是指与恶意应用的关联度较大的行为序列,换句话说,该行为序列输入到该训练好的模型后,得到的输出值接近恶意应用归一化处理后的数值。例如,当应用类别归一化处理后,非恶意应用对应的数值为0,恶意应用对应的数值为1,则行为序列输入到该训练好的模型后,得到的输出值越接近1,则说明该行为序列的关联度越大。关联度越大的行为序列说明该行为序列与恶意应用的关联性越大,当应用存在该行为序列时,则说明该应用为恶意应用的可能性较大。
这里,筛选出关联度较大的行为序列可以具体是指筛选出与恶意应用的关联度大于第一阈值的行为序列。筛选出的行为序列还可以称为第一行为序列。
其中,可以采用以下两种方式筛选出关联度较大的行为序列:
1)、仅利用训练好的模型不断迭代,将每次迭代输出的关联度较大的行为序列作为下次迭代的输入数据。
具体地,可以将所有已知应用中的行为序列输入到训练好的模型中,将输出值越接近恶意应用对应的数值的行为序列筛选出来,再将筛选出来的行为序列重复输出到训练好的模型中,进一步筛选行为序列。其中,可以预先确定迭代的参数,包括:迭代的次数,以及每次筛选的数量,或者,最终筛选的行为序列的数量。这时由于,当神经网络选择Elman神经网络时,Elman神经网络可以看作是一个具有局部记忆单元和局部反馈连接的递归神经网络。可以通过不断改变输入的行为序列,在多次迭代的过程中最终筛选出关联度较大的行为序列。其中,将输出值越接近恶意应用对应的数值的行为序列筛选出来,可以是指将输出值与非安全应用的关联度大于第二阈值的行为序列筛选出来。
例如,存在200个行为序列,预先设置迭代参数:选取输入的行为序列的一半作为下一次迭代的输入行为序列,最终筛选的行为序列的数量为25。在第一次迭代过程中,将所有行为序列按照输入模型后,输出值的大小从大到小的顺序排列,选取前100个行为序列输出模型进行第二次迭代,以此类推,经过第三次迭代后,筛选出的25个行为序列即为最终确定的关联度较大的行为序列。
2)利用卡方检验和该训练好的模型确定该已知应用中的各个行为序列与该已知应用的应用类别的关联度,并筛选出关联度较大的行为序列。
卡方检验用于统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,如果卡方值越大,二者偏差程度越大;反之,二者偏差越小。
其中,卡方检验的公式为:
x2为应用i中的行为序列j的卡方值,T为卡方检验中,应用i的期望计数,该期望计数为应用i中所有的行为序列,同时输入到该训练好的模型后得到的输出值,应用i为该已知应用中的其中一个应用,A为卡方检验中,应用i中的行为序列j的统计计数,该统计计数为一应用i中的行为序列j,输入到该训练好的模型后得到的输出值。
此时,卡方值越小,则说明行为序列j与应用i的应用类型的关联度越大。
具体地,可以通过卡方检验计算出每个行为序列对应的卡方值,并将卡方值小,且与恶意应用的关联度较大的行为序列确定为最终筛选的关联度较大的行为序列。这里,与恶意应用的关联度可以通过行为序列的统计计数来确定,行为序列j的统计计数越接近恶意应用的归一化处理后的数值,则行为序列j与恶意应用的关联度越大,或者,与恶意应用的关联度也可以通过应用的应用类型来确定,即应用的期望计数,当应用i的期望计数越接近恶意应用的归一化处理后的数值,则应用i中的行为序列与恶意应用的关联度越大。这里,可以从与恶意应用的关联度大于第三阈值的应用中筛选行为序列。
S306、从筛选出的关联度较大的行为序列中解析出桩点函数。
单个行为序列中包含有多个函数,可以将这多个函数中存在的敏感函数确定为桩点函数。
在本申请实施例中,桩点函数还可以称为目标函数。
下面以一个具体的例子来介绍上述桩点函数的确定过程。
具体地,在获得训练好的模型后,可以从已知应用中挑选一个恶意应用作为测试样本,该恶意应用包括发送短信、获取电话号码、自动联网等6个行为,将每个行为对应的行为序列经由该训练好的模型后,输出的结果即为各个行为序列的贡献度(又称,统计计数A),表1示例性示出了这6个行为对应的贡献度。
表1
假设该恶意应用的所有行为序列经由训练好的模型后输出的数值,即为期望计数T为0.95,利用公式6计算获得行为1-行为6的卡方值依次为:0.5921、0.4447、0.5158、0.6737、0.7605、1。
这里,由于该测试的应用为恶意应用,通过卡方值可以看出,卡方值越小,行为序列与恶意应用的关联度越大。
因此,可以选取卡方值小的行为序列作为最终筛选出的关联度较大的行为序列。并将行为序列中包含的敏感函数作为桩点函数。表2示例性示出了从该恶意应用中确定的部分桩点函数。
表2
可以理解的是,上述例子只是为了示例性介绍本方案,不构成对本方案的限定。
阶段三:插桩
S307、对电子设备100中存在的桩点函数进行插桩。
对桩点函数插桩可以是指对桩点函数做标记,当该标记的函数被调用时,电子设备100即可得知该调用情况。具体实现中,对函数进行插桩相当于在函数中插入一段代码,该段代码能够获取该函数运行时的信息,从而达到在函数运行时记录该函数运行过程的目的。其中,可以使用静态插桩的方法标记函数。具体地,可以使用Clang编译器,通过设置Clang的编译参数实现静态插桩。
对桩点函数插桩后,当该桩点函数执行时,主要会包含以下几个步骤:
Step1:函数覆盖
当桩点函数开始调用时,会调用插桩过程中插入的回调函数。该回调函数可用于获取桩点函数的符号信息。
Step2:获取桩点函数的符号信息
桩点函数的符号信息包括桩点函数所在的文件名称、文件地址、函数名称、函数起始地址等等。
由于在汇编语言中,如果函数包含了子函数,则在函数执行过程中会在进行BL跳转指令之前,将下一条指令的地址保存在特定的寄存器中,而回调函数可以获取桩点函数或者其调用者的返回地址。
之后,通过函数的返回地址可以获得函数所在的文件名称、文件地址、函数名称、函数地址地址等等符号信息。
Step3:保存符号信息
在获得符号信号之后,可以将其存储起来。其中,由于回调函数可能同时出现在多个线程中,为了线程的安全,同时减少频繁的加锁和开锁的系统开销,可以使用原子队列来进行符号信息的存储。
可以看出,完成桩点函数的插桩之后,在电子设备100检测待检测应用的过程中,当待检测应用调用到桩点函数时,桩点监控模块可以根据调用的一个或多个桩点函数的符号信息,形成行为序列。之后,电子设备100可以将待检测应用的行为序列传入威胁检测引擎来确定该待检测应用的安全性。换句话说,在电子设备100完成对桩点函数的插桩后,在待检测应用运行的过程中,电子设备100可以获取待检测应用对桩点函数的调用情况,并根据该调用情况分析待检测应用的安全性。
另外,需要注意的是,阶段一中训练模型的过程可以由电子设备100或者其他设备,例如服务器、电脑等设备完成,阶段二中确定桩点函数的过程也可以由电子设备100或者其他设备,例如服务器、电脑等设备完成,阶段三中的插桩过程由电子设备100完成。其中,当模型的训练过程由其他设备完成,桩点函数的确定过程由电子设备100完成时,其他设备可以将训练完成的神经网络模型发送给电子设备100,由电子设备100根据该训练好的模型筛选桩点函数,并对桩点函数进行插桩。这时,其他设备还可以不断更新模型的训练过程,将训练好的模型实时更新给电子设备100,不断完善神经网络模型,确保电子设备100的检测精度。
图11示例性示出了本申请实施例提供的一种无线通信系统10。
如图11所示,无线通信系统10包括:电子设备100以及服务器。
其中,电子设备100是指用于检测待检测应用的安全性的终端设备,例如,手机、平板电脑、可穿戴设备等等,在图10所述的无线通信系统10中,电子设备100为手机。服务器是指用于训练神经网络,或者,进一步,用于筛选桩点函数的设备,在前述内容中,服务器可以是指上述提及的其他设备。
在本申请实施例中,服务器可以利用已知应用作为样本训练神经网络模型。具体地,服务器可以将已知应用的行为序列集合以及各行为序列集合对应的行为类型确定为模型的输入数据,将已知应用的应用类型确定为输出数据,通过训练模型使模型的误差范围位于预设误差范围来获得最终的模型。之后,服务器可以将训练好的模型发送给电子设备100,电子设备100可以利用该训练好的模型,从已知应用调用的函数中筛选桩点函数,该桩点函数为敏感函数中,与恶意应用存在较大关联性的函数,之后,电子设备100可以在检测待检测应用的安全性之前,对电子设备100内部存在的桩点函数进行插桩。之后,在电子设备100在沙箱环境中运行时,电子设备100可以根据待检测应用对桩点函数的调用情况来确定该待检测应用的安全性。
或者,在服务器训练好神经网络模型后,服务器可以根据该训练好的模型,从已知应用调用的函数中筛选出桩点函数,之后,再将该桩点函数发送给电子设备100,以供电子设备100进行插桩。
关于电子设备100和服务器的具体实现可参考前述图9、图10以及相关内容,这里不再赘述。
可以看出,当本申请实施例提供的定点插桩方法应用于Android操作系统中的敏感函数的筛选时,可以针对Android提供的30多个类库中的敏感函数,从中筛选出恶意应用最可能调用的桩点函数。表3示例性示出了利用本申请实施例提供的定点插桩方法确定的部分桩点函数。
表3
总的来说,本申请实施例提供的定点插桩方法能够实现精确定点插桩,从电子设备100包含的敏感函数中筛选出与恶意应用关联性较大的桩点函数。在电子设备100利用沙箱检测待检测应用的安全性时,电子设备100可以在沙箱环境中运行该待检测应用,并在运行该待检测应用之前对电子设备100中的桩点函数进行插桩,当待检测应用调用到桩点函数时,会生成行为序列,之后,电子设备100可以根据行为序列中的敏感函数的调用情况确定该待检测应用是否安全。其中,当待检测应用调用了桩点函数时,电子设备100可以确定该待检测应用为恶意应用,当待检测应用未调用桩点函数时,电子设备100可以确定该待检测应用为非恶意应用,或者,进一步地,当待检测应用调用了桩点函数,且桩点函数存在预设的先后函数调用顺序时,电子设备100将该待检测应用确定为恶意应用。
也就是说,本申请实施例提供的定点插桩方法能够减少电子设备100插桩的函数,即减少了无用插桩,加快应用的检测速度,提高应用安全性的检测精度,减少沙箱的量体,降低电子设备100的耗电量,具体地,在检测待检测应用的安全性上,将电子设备100一天的耗电量控制在2mAh之下。
本申请的各实施方式可以任意进行组合,以实现不同的技术效果。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solidstate disk,SSD))等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。
总之,以上所述仅为本发明技术方案的实施例而已,并非用于限定本发明的保护范围。凡根据本发明的揭露,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (13)
1.一种定点插桩方法,其特征在于,所述方法应用于包括电子设备和服务器的通信系统,所述方法包括:
所述服务器以多个应用的行为序列、所述行为序列的行为类型为输入,以所述应用的应用类型为输出,训练得到神经网络模型;其中,所述应用类型包括安全应用和非安全应用,所述行为序列记录应用运行过程中调用的函数,所述行为类型描述所述行为序列与所述应用类型的关联度;
所述服务器根据所述神经网络模型,从所述多个应用的行为序列中,筛选出与非安全应用的关联度大于第一阈值的第一行为序列;
所述服务器获取目标函数,所述目标函数为所述第一行为序列中包含的预设的敏感函数;
所述服务器将所述目标函数发送给所述电子设备;
所述电子设备在子用户空间的第一沙箱环境中运行待检测应用,其中,所述待检测应用的安装包通过主用户空间获取,所述主用户空间和所述子用户空间对应所述电子设备中不同的存储区,所述主用户空间和所述子用户空间相互独立;
所述电子设备获取运行所述待检测应用的过程中,所述待检测应用对所述电子设备中各个函数的调用情况;
在所述待检测应用调用了所述目标函数的情况下,所述电子设备确定所述待检测应用为非安全应用;
在所述待检测应用未调用所述目标函数的情况下,所述电子设备确定所述待检测应用为安全应用。
2.根据权利要求1所述的方法,其特征在于,所述敏感函数为执行敏感行为时调用的函数,所述敏感行为包括以下一项或多项:读取用户隐私信息、修改用户权限或破坏系统环境。
3.根据权利要求2所述的方法,其特征在于,所述行为类型包含正常行为,与非安全无关行为,与非安全相关行为,非安全行为;其中,所述正常行为为安全应用执行的行为,所述非安全行为为非安全应用执行的所述敏感行为,所述与非安全无关行为为非安全应用中,与所述敏感行为无关的行为,所述与非安全相关行为为非安全应用中,与所述敏感行为相关的行为,所述正常行为、与非安全无关行为、与非安全相关行为、非安全行为与非安全应用的关联度逐渐增大。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述电子设备在子用户空间的第一沙箱环境中运行待检测应用之前,所述方法还包括:
所述电子设备标记所述电子设备中的所述目标函数;
所述电子设备获取运行所述待检测应用的过程中,所述待检测应用对所述电子设备中各个函数的调用情况,具体包括:
所述电子设备获取运行所述待检测应用的过程中,所述待检测应用对所述电子设备中所述目标函数的调用情况。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述服务器根据所述神经网络模型,从所述多个应用的行为序列中,筛选出与非安全应用的关联度大于第一阈值的第一行为序列,具体包括:
所述服务器将所述多个应用的行为序列输入到所述神经网络模型中,
所述服务器根据输出值从所述多个应用的行为序列中筛选一部分行为序列,其中,筛选的行为序列对应的输出值与非安全应用的关联度大于第二阈值;
所述服务器将筛选的一部分行为序列重复输入所述神经网络模型,并再次筛选行为序列,直到重复的次数达到预设次数,或者,筛选出的行为序列的数量达到预设数量,筛选出所述第一行为序列。
6.根据权利要求1-3任一项所述的方法,其特征在于,所述服务器根据所述神经网络模型,从所述多个应用的行为序列中,筛选出与非安全应用的关联度大于第一阈值的第一行为序列,具体包括:
所述服务器根据以下公式筛选出所述第一行为序列:
x2为应用i中的行为序列j的卡方值,所述行为序列j为所述应用i中的任意一个行为序列,所述应用i为所述多个应用中与非安全应用的关联度大于第三阈值的任意一个应用;卡方值越小,所述行为序列j与所述应用i的应用类型的关联度越大;
T为应用i的期望计数,所述期望计数为所述应用i中的所有行为序列同时输入到所述训练好的神经网络模型后,获得的输出值;
A为应用i中的行为序列j的统计计数,所述统计计数为所述应用i中的行为序列j输入到所述训练好的神经网络模型后,获得的输出值;
所述第一行为序列为卡方值较小的行为序列。
7.根据权利要求1-3任一项所述的方法,其特征在于,在所述待检测应用调用了所述目标函数,且,所述目标函数存在预设的先后顺序的情况下,所述电子设备确定所述待检测应用为非安全应用。
8.根据权利要求1-3任一项所述的方法,其特征在于,在所述服务器训练所述神经网络模型的过程中,当所述神经网络模型的输出误差位于预设误差范围内时,所述神经网络模型完成训练。
9.根据权利要求1-3任一项所述的方法,其特征在于,所述神经网络模型为Elman神经网络。
10.根据权利要求1-3任一项所述的方法,其特征在于,所述电子设备在子用户空间的第一沙箱环境中运行待检测应用之前,所述方法还包括:
所述电子设备根据所述待检测应用的安装包,在所述第一沙箱环境中安装所述待检测应用。
11.根据权利要求1-3任一项所述的方法,其特征在于,所述电子设备在子用户空间的第一沙箱环境中运行待检测应用之前,所述方法还包括:
所述电子设备在所述子用户空间中创建所述第一沙箱环境。
12.一种电子设备,包括:存储器,一个或多个处理器,多个应用程序,以及一个或多个程序;其中所述一个或多个程序被存储在所述存储器中;其特征在于,所述一个或多个处理器在执行所述一个或多个程序时,使得所述电子设备实现如权利要求1至11任一项所述的方法。
13.一种计算机可读存储介质,包括指令,其特征在于,当所述指令在电子设备上运行时,使得所述电子设备执行如权利要求1至11任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110877386.4A CN113672908B (zh) | 2021-07-31 | 2021-07-31 | 定点插桩方法、相关装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110877386.4A CN113672908B (zh) | 2021-07-31 | 2021-07-31 | 定点插桩方法、相关装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113672908A CN113672908A (zh) | 2021-11-19 |
CN113672908B true CN113672908B (zh) | 2022-09-13 |
Family
ID=78541127
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110877386.4A Active CN113672908B (zh) | 2021-07-31 | 2021-07-31 | 定点插桩方法、相关装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113672908B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115576840B (zh) * | 2022-11-01 | 2023-04-18 | 中国科学院软件研究所 | 基于机器学习的静态程序插桩检测方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109635563A (zh) * | 2018-11-30 | 2019-04-16 | 北京奇虎科技有限公司 | 用于识别恶意应用程序的方法、装置、设备及存储介质 |
CN110543765A (zh) * | 2019-08-28 | 2019-12-06 | 南京市晨枭软件技术有限公司 | 一种恶意软件检测方法 |
CN110941826A (zh) * | 2018-09-21 | 2020-03-31 | 武汉安天信息技术有限责任公司 | 恶意安卓软件检测方法及装置 |
CN111783087A (zh) * | 2020-06-02 | 2020-10-16 | Oppo广东移动通信有限公司 | 可执行文件恶意执行的检测方法及装置、终端、存储介质 |
-
2021
- 2021-07-31 CN CN202110877386.4A patent/CN113672908B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110941826A (zh) * | 2018-09-21 | 2020-03-31 | 武汉安天信息技术有限责任公司 | 恶意安卓软件检测方法及装置 |
CN109635563A (zh) * | 2018-11-30 | 2019-04-16 | 北京奇虎科技有限公司 | 用于识别恶意应用程序的方法、装置、设备及存储介质 |
CN110543765A (zh) * | 2019-08-28 | 2019-12-06 | 南京市晨枭软件技术有限公司 | 一种恶意软件检测方法 |
CN111783087A (zh) * | 2020-06-02 | 2020-10-16 | Oppo广东移动通信有限公司 | 可执行文件恶意执行的检测方法及装置、终端、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113672908A (zh) | 2021-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113641996B (zh) | 检测方法、图形界面及相关装置 | |
US9940478B2 (en) | Fine-grained user control over usages of sensitive system resources having private data with applications in privacy enforcement | |
US10963267B2 (en) | Bootstrapping profile-guided compilation and verification | |
US8799928B1 (en) | System services for native code modules | |
CN103493011A (zh) | 与库操作系统的应用兼容性 | |
CN113641988B (zh) | 沙箱初始化方法、图形界面及相关装置 | |
US20200159536A1 (en) | Unicontainers | |
Puder et al. | Exposing native device APIs to web apps | |
Alfalqi et al. | Android platform malware analysis | |
CN113672908B (zh) | 定点插桩方法、相关装置及系统 | |
CN105447349A (zh) | 对so文件中的导出符号进行保护的方法及装置 | |
Stirparo et al. | In-memory credentials robbery on android phones | |
CN114398673A (zh) | 应用程序的合规检测方法、装置、存储介质与电子设备 | |
CN115659340B (zh) | 一种仿冒小程序识别方法、装置、存储介质及电子设备 | |
CN113835748B (zh) | 基于html5的应用程序的打包方法、系统和可读介质 | |
Castiglione et al. | Automated production of predetermined digital evidence | |
CN114880667A (zh) | 一种脚本检测方法及装置 | |
Almisreb et al. | A review on mobile operating systems and application development platforms | |
Vavru et al. | Android programming: Complete application programming guide | |
WO2023169212A1 (zh) | 一种识别应用程序中sdk的方法、终端及服务器 | |
CN116048963A (zh) | 用于应用程序的封装方法、测试方法、电子设备及存储介质 | |
Estrela | Android Security by Introspection | |
KR20180003226A (ko) | 어플리케이션 패키지를 제공하는 방법 및 시스템, 그리고 어플리케이션을 실행하는 방법 및 시스템 | |
Ahad et al. | FreePart: Hardening Data Processing Software via Framework-based Partitioning and Isolation | |
Sharma | Generating smartphone phishing applications for deception based defense |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220613 Address after: 100095 floors 2-14, building 3, yard 5, honeysuckle Road, Haidian District, Beijing Applicant after: Beijing Honor Device Co.,Ltd. Address before: Unit 3401, unit a, building 6, Shenye Zhongcheng, No. 8089, Hongli West Road, Donghai community, Xiangmihu street, Futian District, Shenzhen, Guangdong 518040 Applicant before: Honor Device Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |