CN110162963B - 一种识别过权应用程序的方法 - Google Patents

一种识别过权应用程序的方法 Download PDF

Info

Publication number
CN110162963B
CN110162963B CN201910341546.6A CN201910341546A CN110162963B CN 110162963 B CN110162963 B CN 110162963B CN 201910341546 A CN201910341546 A CN 201910341546A CN 110162963 B CN110162963 B CN 110162963B
Authority
CN
China
Prior art keywords
module
application program
dfg
cfg
graph
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910341546.6A
Other languages
English (en)
Other versions
CN110162963A (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.)
Tcl Technology Group Finance Co ltd
Original Assignee
Foshan Fengfeng Technology 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 Foshan Fengfeng Technology Co ltd filed Critical Foshan Fengfeng Technology Co ltd
Priority to CN201910341546.6A priority Critical patent/CN110162963B/zh
Publication of CN110162963A publication Critical patent/CN110162963A/zh
Application granted granted Critical
Publication of CN110162963B publication Critical patent/CN110162963B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种识别过权应用程序的方法,本发明所述方法允许更灵活的权限分配机制,本发明的过权检测方法全程全自动执行,并因为深度学习加入的原因具有自我进化自我学习的功能,极大程度地降低了用户的压力,相比起以往的权限管理***只是简单查验***配置文件如Manifest/XML,从源代码/二进制入手更灵活地让用户或安全管理员定义权限数量且打破以往的权限静态化管理模式,每个应用程序每次运行都会经过一次审查,使得应用程序不能永久获得某一权限。

Description

一种识别过权应用程序的方法
技术领域
本发明属于计算机技术领域,尤其涉及一种识别过权应用程序的方法。
背景技术
目前,应用程序的功能越来越多样化,不同的权限请求变得越来越普遍,然而当前许多权限管理平台已无法满足复杂的权限检查要求。公开号为CN109670768A的专利公开了一种多业务域的权限管理方法,应用于权限管理平台,权限管理平台包括多个业务域子***,当接收到客户端发送的访问请求时,调取本地数据库中存储的用户信息表并基于访问请求所携带的用户账号和密码进行用户验证;当验证通过时,获取用户账号对应的用户信息,并基于用户信息,确定用户请求访问的业务域子***以及在该业务域子***下赋予的角色和权限项;将确定的业务域子***、角色和权限项返回至客户端,以供用户进行访问和使用。公开号为CN109447764A的专利公开了一种移动互联网商城管理平台***,由商品管理平台、促销管理平台、订单管理平台、广告管理平台、报表统计平台、会员管理平台、权限管理平台、***设置平台、数据库管理平台、补单管理平台组成;所述权限管理平台包括用于查看当前会员权限、重新分配会员权限以及切换用户状态的管理员列表管理模块、用于查询、删除日志列表的管理员日志管理模块和用于添加角色并选择所述角色需开通权限的角色管理模块;所述角色管理模块与所述管理员列表管理模块相通讯。
现有的权限管理平台存在如下一些缺陷:
1、目前的权限管理平台对于权限设置过于粗粒度,许多权限不能细粒粒度地划分及分配,导致某些应用程序需要请求冗余的权限才能完成工作。
2、目前的权限管理平台几乎没有对权限有审查制度,这些平台是基于默认应用程序提供商都是诚实的前提来进行权限分配。
3、目前的权限管理平台存在静态化管理模式,一旦一个应用程序被授予某种权限,应用程序则能够永久地拥有权限,直到用户特意终止权限的续签。
4、目前的权限管理平台缺乏智能地管理机制,每个应用所有的权限都需要用户一一去判断及授权,极大地增加了用户的负担。
5、目前的权限管理平台在划分权限的时候不能做到去耦合,不同权限之间可能存在线性或非线性的相关关系;一旦一个应用程序被拒绝某权限A,它能够通过权限B和C去完成权限A才能完成的工作。
发明内容
本发明的目的在于提供一种能够克服上述技术问题的识别过权应用程序的方法,本发明所述方法包括以下步骤:
步骤1、创建一个应用程序控制流图CFG生成模块;
创建一个应用程序数据流图DFG生成模块;
创建一个基于自然语言处理NLP的应用程序简介解析模块;
创建一个基于人工智能分类器ML/AI的过权判断模块;
创建一个总体过权判断模块;
应用程序CFG生成模块能够支持源代码和二进制两种控制流图生成模式;
应用程序DFG生成模块能够支持源代码和二进制两种数据流图生成模式;
步骤1.1、基于NLP的应用程序简介解析模块能够支持源至少中文或英文的解析;
步骤1.2、基于ML/AI的过权判断模块支持控制流图和数据流图输出的数据作为输入;
步骤1.3、总体过权判断模块将基于NLP的应用程序简介解析模块和基于ML/AI的过权判断模块输出结果进行综合判断。
步骤2、在平台运行阶段,应用程序CFG生成模块运行步骤如下:
步骤2.1、接收一个应用程序作为输入;
步骤2.2、如输入的应用程序为源代码模式,模块则会判断源代码为哪种编程语言编写,并调用对应解析器进行语义解析;
步骤2.3、在解析器成功解析出所有的语义结构后,模块将会寻找所有的跳转语句,例如条件判断语句,循环语句;
步骤2.4、模块会根据跳转语句将代码分成代码块;
步骤2.5、模块将会用深度优先搜索算法将代码块连成树状图,每个代码块为图中的一个节点;
步骤2.6、上述步骤2.2中当输入的应用程序为二进制模式,模块则会通过二进制头判断二进制哪种指令集(如x86,ARM,或MIPS),在调用相应的解析器对二进制进行反汇编解析;
步骤2.7、在解析器成功解析出所有的语义结构后,模块将会寻找所有的跳转语句,例如JMP,BR;
步骤2.8、模块会根据跳转语句将代码分成代码块;
步骤2.9、模块将会用深度优先搜索算法将代码块连成树状图,每个代码块为图中的一个节点,此树状图即为CFG;
步骤2.10、模块将输出生成的CFG。
步骤3、在平台运行阶段,应用程序DFG生成模块运行步骤如下:
步骤3.1、接收一个应用程序作为输入;
步骤3.2、如输入的应用程序为源代码模式,模块则会判断源代码为哪种编程语言编写,并调用对应解析器进行语义解析;
步骤3.3、在解析器成功解析出所有的语义结构后,模块将会寻找所有的变量;
步骤3.4、模块将会用利用污点追踪算法将数据所在的代码模块连城树状图,每个代码块为图中的一个节点;
步骤3.5、上述步骤3.2中,当输入的应用程序为二进制模式,模块则会通过二进制头判断二进制哪种指令集(如x86,ARM,或MIPS),在调用相应的解析器对二进制进行反汇编解析;
步骤3.6、在解析器成功解析出所有的语义结构后,模块将会寻找所有的变量;
步骤3.7、模块将会用利用污点追踪算法将数据所在的代码模块连成树状图,每个代码块为图中的一个节点,树状图即为DFG;
步骤3.8、模块将输出生成的DFG。
步骤4、在平台运行阶段,基于NLP的应用程序简介分析模块运行步骤如下:
步骤4.1、接收一个应用程序的介绍作为输入;
步骤4.2、判断介绍的语言种类,并判断语言类别,调用相应的语言解析器,将语句中的各个部分按照语言学的语法进行分割(如主谓宾);
步骤4.3、训练一个NLP算法识别判断简介中应用程序所需要的权限;NLP算法能够是但不局限于循环神经网络(RNN)、隐式狄利克雷分布(LDA)算法;
步骤4.4、判断完成后,模块会将判断出的所需权限按照向量输出,向量由n个二进制(0或1)数字所组成,如果第i个数字为1则表示应用程序需要第i个权限,0则表示不需要;n表示权限的总数。
步骤5、在平台运行阶段,基于ML/AI的过权判断模块运行步骤如下:
步骤5.1、接收一个应用程序的CFG和DFG作为输入,CFG和DFG由上述CFG生成模块和DFG生成模块所生成;
步骤5.2、当输入为CFG,模块将每个CFG中的节点提取k个特征,这些特征能够是但不仅限于赋值指令的数量,定义指令的数量,***调用的数量,从而形成m*k维特征举证;m为节点的数量;
步骤5.3、模块对CFG求出m*m维邻接矩阵,并对邻接矩阵做必要的转化,这些转换能够是但不局限于改变再置、SVD分解、Gram-Schmidt正交化;
步骤5.4、当输入为DFG,模块将每个DFG中的节点提取q个特征,这些特征能够是但不仅限于数据类型、数据所在内存中占有空间、数据有效范围、数据有效时间,从而形成m*q维特征举证;此处m为节点的数量;
步骤5.5、模块对DFG求出m*m维邻接矩阵,并对邻接矩阵做必要的转化,这些转换能够是但不局限于改变再置、SVD分解、Gram-Schmidt正交化;
步骤5.6、模块将步骤5.2与步骤5.3及步骤5.4与步骤5.5产生的矩阵做矩阵乘法,得到新的矩阵,并将新的矩阵作为输入放进ML/AI模型进行判断;
步骤5.7、判断完成后,模块会将判断出的所需权限按照向量输出,向量由n个二进制(0或1)数字所组成,如果第i个数字为1则表示应用程序需要第i个权限,0则表示不需要;n表示权限的总数。
步骤6、在平台运行阶段,总体过权判断模块运行步骤如下:
步骤6.1、模块将上述基于NLP的应用程序简介解析模块及基于ML/AI的过权判断模块最终输出的向量作为输入;
步骤6.2、模块对这两向量做差异分析,差异分析能够是但不仅限于L1/L2距离、向量差乘、熵、均方误差;出现差异大于一个阈值,则阻止程序运行并通知用户,否则运行程序执行;阈值能够根据不同***场景动态调节。
本发明所述方法相对现在的权限管理***的优越效果在于:
1、本发明所述方法允许更灵活的权限分配机制,相比起以往的权限管理***只是简单查验***配置文件如Manifest/XML,从源代码/二进制入手更灵活地让用户或安全管理员定义权限数量。
2、本发明所述方法打破以往的权限静态化管理模式,每个应用程序每次运行都会经过一次审查,使得应用程序不能永久获得某一权限。
3、提供了一直先进的权限审查机制。
4、提供了智能管理机制,加入了深度学习和机器学习模块,从而对权限更准确更智能地进行管理。
5、本发明的过权检测方法全程全自动执行,并因为深度学习加入的原因具有自我进化自我学习的功能,极大程度地降低了用户的压力。
附图说明
图1是本发明所述方法的识别过权应用程序的平台的工作流程图;
图2是本发明所述方法的应用程序CFG生成模块的工作流程图;
图3是本发明所述方法的应用程序DFG生成模块的工作流程图;
图4是本发明所述方法的基于NLP的应用程序简介解析模块的工作流程图;
图5是本发明所述方法的基于ML/AL的过权判断模块的工作流程图;
图6是本发明所述方法的总体过权判断模块的工作流程图;
图7是本发明所述方法的实施例1的流程图;
图8是本发明所述方法的实施例2的流程图。
具体实施方式
下面结合附图对本发明的实施方式进行详细描述。这些附图均为简化的示意图,仅以示意方式说明本发明的基本结构,因此其仅显示与本发明有关的构成,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本说明书中的“或”仅是一种表示逻辑关联的连接词,表示存在三种关系,比如,“A或B”表示单独存在A,单独存在B,以及A和B同时存在三种状况。
现在结合附图对本发明作进一步详细的说明,这些附图均为简化的示意图,仅以示意方式说明本发明的基本结构,因此其仅显示与本发明有关的构成,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
本发明所述方法如图1所示,包括以下步骤:
创建一个如图2所示的应用程序控制流图CFG生成模块;
创建一个如图3所示的应用程序数据流图DFG生成模块;
创建一个如图4所示的基于自然语言处理NLP的应用程序简介解析模块;
创建一个如图5所示的基于人工智能分类器ML/AI的过权判断模块;
创建一个总体过权判断模块;
如图2所示的应用程序CFG生成模块能够支持源代码和二进制两种控制流图生成模式。
如图3所示的应用程序DFG生成模块能够支持源代码和二进制两种数据流图生成模式。
如图4所示的基于NLP的应用程序简介解析模块能够支持源至少中文或英文的解析。
如图5所示的基于ML/AI的过权判断模块支持控制流图和数据流图输出的数据作为输入。
如图6所示的总体过权判断模块将基于NLP的应用程序简介解析模块和基于ML/AI的过权判断模块输出结果进行综合判断。
在平台运行阶段,应用程序CFG生成模块运行步骤如下:
步骤(1)接收一个应用程序作为输入。
步骤(2)如输入的应用程序为源代码模式,模块则会判断源代码为哪种编程语言编写,并调用对应解析器进行如图2所示的语义解析。
步骤(3)在解析器成功解析出所有的语义结构后,模块将会寻找所有的跳转语句,例如条件判断语句,循环语句。
步骤(4)之后,模块会根据如图2所示的跳转语句将代码分成代码块。
步骤(5)之后,模块将会用如图2所示的深度优先搜索算法将代码块连成树状图,每个代码块为图中的一个节点。
步骤(6)上述步骤(2)中,当输入的应用程序为二进制模式,模块则会通过二进制头判断二进制哪种指令集(如x86,ARM,或MIPS),在调用相应的解析器对二进制进行反汇编解析。
步骤(7)在解析器成功解析出所有的语义结构后,模块将会寻找所有的跳转语句,例如JMP,BR。
步骤(8)之后,模块会根据跳转语句将代码分成代码块。
步骤(9)之后,模块将会用深度优先搜索算法将代码块连成树状图,每个代码块为图中的一个节点,此树状图即为CFG。
步骤(10)之后,模块将输出生成的CFG。
在平台运行阶段,如图3所示的应用程序DFG生成模块运行步骤如下:
步骤(1)接收一个应用程序作为输入。
步骤(2)当输入的应用程序为源代码模式,模块则会判断源代码为哪种编程语言编写,并调用如图3所示的对应解析器进行语义解析。
步骤(3)在解析器成功解析出所有的语义结构后,模块将会寻找所有的变量。
步骤(4)之后,模块将会用利用如图3所示的污点追踪算法将数据所在的代码模块连城树状图,每个代码块为图中的一个节点。
步骤(5)上述步骤(2)中,当输入的应用程序为二进制模式,模块则会通过二进制头判断二进制哪种指令集(如x86,ARM,或MIPS),在调用相应的解析器对二进制进行反汇编解析。
步骤(6)在解析器成功解析出所有的语义结构后,模块将会寻找所有的变量。
步骤(7)之后,模块将会用利用如图3所示的污点追踪算法将数据所在的代码模块连成树状图,每个代码块为图中的一个节点,此树状图即为DFG。
步骤(8)之后,模块将输出生成的DFG。
在平台运行阶段,基于NLP的应用程序简介分析模块运行步骤如下:
步骤(1)接收一个应用程序的介绍作为输入。
步骤(2)判断介绍的语言种类,并判断语言类别,调用如图4所示的相应的语言解析器,将语句中的各个部分按照语言学的语法进行分割(如主谓宾)。
步骤(3)训练一个NLP算法识别判断简介中应用程序所需要的权限;NLP算法能够是但不局限于循环神经网络(RNN)、隐式狄利克雷分布(LDA)算法。
步骤(4)判断完成后,模块会将判断出的所需权限按照向量输出,如图4所示,向量由n个二进制(0或1)数字所组成,当第i个数字为1则表示应用程序需要第i个权限,0则表示不需要;n表示权限的总数。
在平台运行阶段,如图5所示的基于ML/AI的过权判断模块:
步骤(1)接收一个应用程序的CFG和DFG作为输入,CFG和DFG由上述CFG生成模块和DFG生成模块所生成。
步骤(2)如图5所示,当输入为CFG,模块将每个CFG中的节点提取k个特征,这些特征能够是但不仅限于赋值指令的数量,定义指令的数量,***调用的数量,从而形成m*k维特征矩阵;m为节点的数量。
步骤(3)之后,如图5所示,模块对CFG求出m*m维邻接矩阵,并对邻接矩阵做必要的转化,这些转换能够是但不局限于改变再置、SVD分解、Gram-Schmidt正交化。
在平台运行阶段,总体过权判断模块运行如下:
步骤(4)如图5所示,当输入为DFG,模块将每个DFG中的节点提取q个特征,这些特征能够是但不仅限于数据类型、数据所在内存中占有空间、数据有效范围、数据有效时间,形成m*q维特征矩阵;m为节点的数量。
步骤(5)之后,如图5所示,模块对DFG求出m*m维邻接矩阵,并对邻接矩阵做必要的转化,这些转换能够是但不局限于改变再置、SVD分解、Gram-Schmidt正交化。
步骤(6)之后,如图5所示,模块将步骤(2)与步骤(3)及步骤(4)与步骤(5)产生的矩阵做矩阵乘法,得到新的矩阵,并将新的矩阵作为输入放进ML/AI模型进行判断。
步骤(7)判断完成后,如图5所示,模块会将判断出的所需权限按照向量输出,向量由n个二进制(0或1)数字所组成,当第i个数字为1则表示应用程序需要第i个权限,0则表示不需要;n表示权限的总数。
在平台运行阶段,总体过权判断模块运行步骤如下:
步骤(1)如图6所示,模块将上述基于NLP的应用程序简介解析模块及基于ML/AI的过权判断模块最终输出的向量作为输入。
步骤(2)之后,如图6所示,模块对这两向量做差异分析,差异分析能够是但不仅限于L1/L2距离、向量差乘、熵、均方误差;差异大于一个阈值,则阻止程序运行并通知用户,否则运行程序执行;阈值能够根据不同***场景动态调节。
下面用两个实施例结合附图对本发明的过权应用程序识别平台加以说明。
实施例1:
在实施例1中,安卓手机应用被作为例子阐述本发明具体如何强化安卓操作***使得用户免受过权安卓应用的干扰。
在实施例1中,本发明所展示平台能够运行于安卓操作***内核层面亦能够运行于第三方云分析平台。
如图7所示,实施例2总共分为以下10个步骤:
步骤100:如图7所示,本发明所展示平台会获取要获取要检查的安卓应用程序代码,若代码为源代码,则直接前往步骤120;若代码为安卓二进制代码,即APK,则继续顺序执行步骤110。
步骤110:若代码为APK形式,平台则用安卓逆向工程工具如APKTool及dex2jar的工具将APK变成伪源代码模式。
步骤120:平台用Java/Kotlin解析器对应用程序源代码进行解析,并根据跳转语句将程序源代码分成不同代码块。
步骤130:利用如图2所示的深度优先搜索算法对步骤120所产生的代码块进行有向连接,生成CFG。
步骤140:利用如图3所示的污点追踪算法对步骤120所产生的代码块进行有向连接,生成DFG。
步骤150:如图5所示,平台对步骤130和140所生成的CFG和DFG分别作不同的特征提取,对应生成CFG特征矩阵及DFG矩阵,并求出CFG邻接矩阵和DFG邻接矩阵,并对邻接矩阵做必要的转化。
步骤160:如图5所示,平台接来将CFG特征矩阵和CFG邻接矩阵做矩阵乘积,DFG特征矩阵和DFG邻接矩阵做矩阵乘积,并把两个乘积所得矩阵合并,变成一个庞大矩阵。
步骤170:平台接着把步骤160所得的庞大矩阵作为如图3所示的CNN模型的输入,让CNN判断应用程序所需细粒度权限(如需后台访问用户相册),并以向量形式输出。
步骤180:同时,平台对于应用程序的描述(在下载商城处)进行分析,用如图4所示的NLP算法判断应用程序所需细粒度权限,仅在用户使用应用时访问用户相册,并以向量形式输出。
步骤190:之后,如图6所示,平台根据步骤170及180输出结果比较差异性,当发现差异(如需后台访问用户相册与仅在用户使用本应用时访问用户相册描述不符),则发出警告;当平台在***内核层面运行,则直接停止程序运行并弹出警告指示用户;当平台在云端运行,则通过推送通知用户。
至此,实施例1执行结束。
上述流程的顺序不是绝对的,当两个步骤之间没有互相依赖,允许以任意互相调换顺序。
在实施例2中,智能家居应用程序被作为例子阐述本发明具体如何强化智能家居云平台使得用户免受过权智能家居应用的干扰。
在实施例2中,本发明所展示平台能够运行于智能家居控制云IFTTT平台。
如图8所示,实施例2总共分为以下9个步骤:
步骤200:首先,如图1所示,平台会获取需要获取、需要检查的智能家居应用程序代码,本步骤的IFTTT平台均采用即时编译***JIT,应用程序代码皆为源代码形式。
步骤210:平台用Java/Groovy解析器对应用程序源代码进行解析,并根据跳转语句将程序源代码分成不同代码块。
步骤220:利用图2所示的深度优先搜索算法对步骤210所产生的代码块进行有向连接,生成CFG。
步骤230:利用图3所示的污点追踪算法对步骤210所产生的代码块进行有向连接,生成DFG。
步骤240:如图5所示,平台对步骤220和230所生成的CFG和DFG分别作不同的特征提取,对应生成CFG特征矩阵及DFG矩阵,并求出CFG邻接矩阵和DFG邻接矩阵,并对邻接矩阵做必要的转化。
步骤250:如图5所示,平台将CFG特征矩阵和CFG邻接矩阵做矩阵乘积,DFG特征矩阵和DFG邻接矩阵做矩阵乘积,并把两个乘积所得矩阵合并,变成一个庞大矩阵。
步骤260:如图5所示,平台接着把步骤250所得的庞大矩阵作为CNN模型的输入,让CNN判断应用程序所需细粒度权限(如需访问用户智能门锁),并以向量形式输出。
步骤270:同时,如图4所示,平台对于应用程序的描述进行分析,用NLP算法判断应用程序所需细粒度权限(如仅需访问用户智能灯泡),并以向量形式输出。
步骤280:之后,如图6所示,平台根据步骤260及270输出结果比较差异性,如发现差异(如需访问用户智能门锁与仅需访问用户智能灯泡的描述不符),则发出警告并在IFTTT云端平台停止应用程序的运行,并通过推送通知用户。
至此,实施例2执行结束。
上述流程的顺序不是绝对的,当两个步骤之间没有互相依赖,允许以任意互相调换顺序。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的范围内,能够轻易想到的变化或替换,都应涵盖在本发明权利要求的保护范围内。

Claims (5)

1.一种识别过权应用程序的方法,其特征在于,包括以下步骤:
步骤1、创建一个应用程序控制流图CFG生成模块;创建一个应用程序数据流图DFG生成模块;创建一个基于自然语言处理NLP的应用程序简介解析模块;创建一个基于人工智能分类器ML/AI的过权判断模块;创建一个总体过权判断模块;应用程序CFG生成模块能够支持源代码和二进制两种控制流图生成模式;应用程序DFG生成模块能够支持源代码和二进制两种数据流图生成模式;
所述步骤1包括以下步骤:
步骤1.1、基于NLP的应用程序简介解析模块能够支持至少中文或英文的解析;
步骤1.2、基于ML/AI的过权判断模块支持控制流图和数据流图输出的数据作为输入;
步骤1.3、总体过权判断模块将基于NLP的应用程序简介解析模块和基于ML/AI的过权判断模块输出结果进行综合判断;
步骤2、在平台运行阶段,应用程序CFG生成模块运行步骤;
所述步骤2包括以下步骤:
步骤2.1、接收一个应用程序作为输入;
步骤2.2、当输入的应用程序为源代码模式,模块则会判断源代码为哪种编程语言编写,并调用对应解析器进行语义解析;
步骤2.3、在解析器成功解析出所有的语义结构后,模块将会寻找所有的跳转语句;
步骤2.4、模块会根据跳转语句将代码分成代码块;
步骤2.5、模块将会用深度优先搜索算法将代码块连成树状图,每个代码块为图中的一个节点;
步骤2.6、上述步骤2.2中,输入的应用程序为二进制模式,模块则会通过二进制头判断二进制哪种指令集,再调用相应的解析器对二进制进行反汇编解析;
步骤2.7、在解析器成功解析出所有的语义结构后,模块将会寻找所有的跳转语句;
步骤2.8、模块会根据跳转语句将代码分成代码块;
步骤2.9、模块将会用深度优先搜索算法将代码块连成树状图,每个代码块为图中的一个节点,树状图即为CFG;
步骤2.10、模块将输出生成的CFG;
步骤3、在平台运行阶段,应用程序DFG生成模块运行步骤;
步骤4、在平台运行阶段,基于NLP的应用程序简介分析模块运行步骤;
步骤5、在平台运行阶段,基于ML/AI的过权判断模块运行步骤;
步骤6、在平台运行阶段,总体过权判断模块运行步骤。
2.根据权利要求1所述的一种识别过权应用程序的方法,其特征在于,所述步骤3包括以下步骤:
步骤3.1、接收一个应用程序作为输入;
步骤3.2、当输入的应用程序为源代码模式,模块则会判断源代码为哪种编程语言编写,并调用对应解析器进行语义解析;
步骤3.3、在解析器成功解析出所有的语义结构后,模块将会寻找所有的变量;
步骤3.4、模块将会用利用污点追踪算法将数据所在的代码模块连成树状图,每个代码块为图中的一个节点;
步骤3.5、上述步骤3.2中如果输入的应用程序为二进制模式,模块则会通过二进制头判断二进制哪种指令集,再调用相应的解析器对二进制进行反汇编解析;
步骤3.6、在解析器成功解析出所有的语义结构后,模块将会寻找所有的变量;
步骤3.7、模块将会用利用污点追踪算法将数据所在的代码模块连成树状图,每个代码块为图中的一个节点,树状图即为DFG;
步骤3.8、模块将输出生成的DFG。
3.根据权利要求1所述的一种识别过权应用程序的方法,其特征在于,所述步骤4包括以下步骤:
步骤4.1、接收一个应用程序的介绍作为输入;
步骤4.2、判断介绍的语言种类,并判断语言类别,调用相应的语言解析器,将语句中的各个部分按照语言学的语法进行分割;
步骤4.3、训练一个NLP算法识别判断简介中应用程序所需要的权限;NLP算法包括循环神经网络算法和隐式狄利克雷分布算法;
步骤4.4、模块会将判断出的所需权限按照向量输出,向量由n个二进制数字所组成,当第i个数字为1则表示应用程序需要第i个权限,0则表示不需要;n表示权限的总数。
4.根据权利要求1所述的一种识别过权应用程序的方法,其特征在于,所述步骤5包括以下步骤:
步骤5.1、接收一个应用程序的CFG和DFG作为输入,CFG和DFG由上述CFG生成模块和DFG生成模块所生成;
步骤5.2、当输入为CFG,模块将每个CFG中的节点提取k个特征,这些特征包括赋值指令的数量、定义指令的数量和***调用的数量,从而形成m*k维特征;m为节点的数量;
步骤5.3、模块对CFG求出m*m维邻接矩阵,并对邻接矩阵做必要的转化,这些转换包括改变再置、SVD分解和Gram-Schmidt正交化;
步骤5.4、当输入为DFG,模块将每个DFG中的节点提取q个特征,这些特征包括数据类型、数据所在内存中占有空间、数据有效范围和数据有效时间,从而形成m*q维特征;m为节点的数量;
步骤5.5、模块对DFG求出m*m维邻接矩阵,并对邻接矩阵做必要的转化,这些转换包括改变再置、SVD分解和Gram-Schmidt正交化;
步骤5.6、模块将步骤5.2与步骤5.3及步骤5.4与步骤5.5产生的矩阵做矩阵乘法,得到新的矩阵,并将新的矩阵作为输入放进ML/AI模型进行判断;
步骤5.7、判断完成后,模块会将判断出的所需权限按照向量输出,向量由n个二进制数字所组成,当第i个数字为1则表示应用程序需要第i个权限,0则表示不需要;n表示权限的总数。
5.根据权利要求1所述的一种识别过权应用程序的方法,其特征在于,所述步骤6包括以下步骤:
步骤6.1、模块将所述基于NLP的应用程序简介分析模块和所述基于ML/AI的过权判断模块最终输出的向量作为输入;
步骤6.2、模块对这两向量做差异分析,差异分析包括L1/L2距离、向量差乘、熵和均方误差;当差异大于一个阈值,则阻止程序运行并通知用户,否则运行程序执行;阈值能够根据不同***场景动态调节。
CN201910341546.6A 2019-04-26 2019-04-26 一种识别过权应用程序的方法 Active CN110162963B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910341546.6A CN110162963B (zh) 2019-04-26 2019-04-26 一种识别过权应用程序的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910341546.6A CN110162963B (zh) 2019-04-26 2019-04-26 一种识别过权应用程序的方法

Publications (2)

Publication Number Publication Date
CN110162963A CN110162963A (zh) 2019-08-23
CN110162963B true CN110162963B (zh) 2021-07-06

Family

ID=67640038

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910341546.6A Active CN110162963B (zh) 2019-04-26 2019-04-26 一种识别过权应用程序的方法

Country Status (1)

Country Link
CN (1) CN110162963B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111353146B (zh) * 2020-05-25 2020-08-25 腾讯科技(深圳)有限公司 应用程序敏感权限的检测方法、装置、设备和存储介质
CN111753322B (zh) * 2020-07-03 2021-10-01 烟台中科网络技术研究所 一种移动App权限列表自动核验方法及***
CN114065161A (zh) * 2021-11-22 2022-02-18 京东方科技集团股份有限公司 管理平台的权限控制方法、***、管理平台及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106537332A (zh) * 2014-06-13 2017-03-22 查尔斯斯塔克德拉珀实验室公司 软件分析***和方法
KR101837337B1 (ko) * 2017-02-14 2018-04-19 한양대학교 에리카산학협력단 네이티브코드에서 기본 블록들 간의 모든 상대주소 점프를 간접 점프로 변환하여 분석도구의 cfg 생성을 방해하는 방법 및 장치
CN108681671A (zh) * 2018-05-21 2018-10-19 中国科学技术大学 一种Android移动攻击溯源方法
CN109408389A (zh) * 2018-10-30 2019-03-01 北京理工大学 一种基于深度学习的代码缺陷检测方法及装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2609506B1 (en) * 2010-08-24 2019-01-16 Checkmarx Ltd. Mining source code for violations of programming rules
US10986103B2 (en) * 2013-07-31 2021-04-20 Micro Focus Llc Signal tokens indicative of malware
CN104598824B (zh) * 2015-01-28 2016-04-06 国家计算机网络与信息安全管理中心 一种恶意程序检测方法及其装置
CN104834862A (zh) * 2015-03-25 2015-08-12 南京大学 一种安卓权限提升攻击的全面静态分析***
CN104834858A (zh) * 2015-04-24 2015-08-12 南京邮电大学 一种android应用中恶意代码的静态检测方法
CN106228068B (zh) * 2016-07-21 2019-03-05 江西师范大学 基于混合特征的Android恶意代码检测方法
CN106709356B (zh) * 2016-12-07 2019-05-24 西安电子科技大学 基于静态污点分析和符号执行的安卓应用漏洞挖掘方法
CN106874761A (zh) * 2016-12-30 2017-06-20 北京邮电大学 一种安卓***恶意应用检测方法及***
CN106951786A (zh) * 2017-03-30 2017-07-14 国网江苏省电力公司电力科学研究院 面向安卓平台的移动应用权限安全分析方法
CN107103239B (zh) * 2017-04-10 2019-11-12 中国民生银行股份有限公司 基于应用***业务处理逻辑的源代码越权检测方法及装置
US10853724B2 (en) * 2017-06-02 2020-12-01 Xerox Corporation Symbolic priors for recurrent neural network based semantic parsing
CN108804912B (zh) * 2018-06-15 2021-09-28 北京大学 一种基于权限集差异的应用程序越权检测方法
CN109101820B (zh) * 2018-08-16 2021-09-07 北京理工大学 一种基于执行流图的Web应用安全漏洞预测方法
CN109284370B (zh) * 2018-08-20 2022-05-06 中山大学 一种基于深度学习的移动应用描述与权限保真性判定方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106537332A (zh) * 2014-06-13 2017-03-22 查尔斯斯塔克德拉珀实验室公司 软件分析***和方法
KR101837337B1 (ko) * 2017-02-14 2018-04-19 한양대학교 에리카산학협력단 네이티브코드에서 기본 블록들 간의 모든 상대주소 점프를 간접 점프로 변환하여 분석도구의 cfg 생성을 방해하는 방법 및 장치
CN108681671A (zh) * 2018-05-21 2018-10-19 中国科学技术大学 一种Android移动攻击溯源方法
CN109408389A (zh) * 2018-10-30 2019-03-01 北京理工大学 一种基于深度学习的代码缺陷检测方法及装置

Also Published As

Publication number Publication date
CN110162963A (zh) 2019-08-23

Similar Documents

Publication Publication Date Title
US11436337B2 (en) System and method for application security profiling
CN110162963B (zh) 一种识别过权应用程序的方法
CN100464294C (zh) 对命令的输入参数执行基于反射的处理的方法和***
CN110225029B (zh) 注入攻击检测方法、装置、服务器及存储介质
Alhuzali et al. Chainsaw: Chained automated workflow-based exploit generation
CN111008376B (zh) 一种基于代码动态分析的移动应用源代码安全审计***
CN101997912A (zh) 基于Android平台的强制访问控制装置及控制方法
CN104834858A (zh) 一种android应用中恶意代码的静态检测方法
CN102667712A (zh) 用于同时定义和实行访问控制和完整性策略的***、方法和装置
CN103838614A (zh) 一种数据处理方法及装置
CN110929267A (zh) 代码漏洞检测方法、装置、设备及存储介质
CN113158189B (zh) 一种恶意软件分析报告生成方法、装置、设备和介质
CN112688966A (zh) webshell检测方法、装置、介质和设备
CN115017526A (zh) 数据库访问方法、装置、电子设备及存储介质
Liu et al. A smart contract vulnerability detection mechanism based on deep learning and expert rules
CN117436112B (zh) 一种用户权限数据的处理方法和装置
CN113885876A (zh) 一种参数校验方法、装置、存储介质及计算机***
CN114115884B (zh) 一种编程服务的管理方法以及相关装置
CN117390603A (zh) 基于前端代码加密的访问方法、装置、电子设备及介质
CN116610561A (zh) 基于抽象语法树的智能合约跨合约检测方法及***
CN116628681A (zh) 一种基于上位机监测控制软件的权限管理方法及***
CN109409120B (zh) 一种面向Spark的访问控制方法及***
CN113449330B (zh) 对Javascript加密文件进行传输的方法
Wang et al. A semantic-based smart contract defect detection general platform
CN113050927A (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
TA01 Transfer of patent application right

Effective date of registration: 20210601

Address after: 528000 room 511, 5th floor, Block E, Foshan National Torch Innovation and entrepreneurship Park, No. 13, Huabao South Road, Chancheng District, Foshan City, Guangdong Province

Applicant after: Foshan Fengfeng Technology Co.,Ltd.

Address before: No.133 Heyun shuixuan, biguihua City, Shunde District, Foshan City, Guangdong Province, 528313

Applicant before: Xiao Yinhao

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20221228

Address after: 516006 21st Floor, TCL Technology Building, No. 19 Community, Zhongkai High tech Development Zone, Huizhou, Guangdong

Patentee after: TCL Technology Group Finance Co.,Ltd.

Address before: 528000 room 511, 5th floor, Block E, Foshan National Torch Innovation and entrepreneurship Park, No. 13, Huabao South Road, Chancheng District, Foshan City, Guangdong Province

Patentee before: Foshan Fengfeng Technology Co.,Ltd.

TR01 Transfer of patent right