CN112199095B - 一种加密api使用分析方法及系统 - Google Patents
一种加密api使用分析方法及系统 Download PDFInfo
- Publication number
- CN112199095B CN112199095B CN202011110320.4A CN202011110320A CN112199095B CN 112199095 B CN112199095 B CN 112199095B CN 202011110320 A CN202011110320 A CN 202011110320A CN 112199095 B CN112199095 B CN 112199095B
- Authority
- CN
- China
- Prior art keywords
- data set
- api
- encryption
- encryption api
- hidden markov
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Telephonic Communication Services (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种加密API使用分析方法及系统,所述方法包括:获取APK数据集,并根据所述APK数据集得到加密API调用序列数据集,所述加密API调用序列数据集基于Dalvik指令的分类信息构建的;使用所述加密API调用序列数据集中的训练集以及验证集进行隐马尔可夫模型训练以及N‑gram模型训练,得到训练后的隐马尔可夫模型和N‑gram模型;根据训练后的隐马尔可夫模型以及N‑gram模型,对加密API进行误用检测以及使用推荐操作。本发明中的加密API调用序列数据集构建时引入符号分析技术,并且在对加密API使用分析上效率明显提高,且效果更好。
Description
技术领域
本发明涉及加密API技术领域,尤其涉及一种加密API使用分析方法及系统。
背景技术
现有技术中对于API调用序列的预测分析,采用的是基于人工分析一定数量的API调用,并基于频繁出现的API调用推断出API调用约规,但是其严重依赖数据集的质量。或者是基于N-gram模型来实现的,但是现有技术中的N-gram模型约束条件较多,且对于API的要求较为严格,因此在对于API调用序列的预测分析效果并不好。而现有技术中采用CRYSL密码语言来将API调用序列进行约束,基本都受到领域的限制,且难以进行维护。因此,现在市场上主要的加密API调用规约,基本都是依赖人工定义,难以维护,且使用错误率高,缺乏正确使用加密API的数据集。
因此,现有技术还有待改进和提高。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种加密API使用分析方法及系统,旨在解决现有技术中的加密API调用规约,基本都是依赖人工定义,难以维护,且使用错误率高,缺乏正确使用加密API的数据集的问题。
为了解决上述技术问题,本发明所采用的技术方案如下:
第一方面,本发明提供一种加密API使用分析方法,其中,所述方法包括:
获取APK数据集,并根据所述APK数据集得到加密API调用序列数据集,所述加密API调用序列数据集基于Dalvik指令的分类信息构建的;
使用所述加密API调用序列数据集中的训练集以及验证集进行隐马尔可夫模型训练以及N-gram模型训练,得到训练后的隐马尔可夫模型和N-gram模型;
根据训练后的隐马尔可夫模型以及N-gram模型,对加密API进行误用检测以及使用推荐操作。
在一种实现方式中,所述获取APK数据集,并根据所述APK数据集得到加密API调用序列数据集,包括:
获取所述APK数据集,并对所述APK数据集进行预处理;
提取预处理后的所述APK数据集中每一个应用程序的执行路径,并构建Dalvik指令;
对所述Dalvik指令进行分类,得到所述Dalvik指令的分类信息,并构建所述加密API调用序列数据集。
在一种实现方式中,所述获取所述APK数据集,并对所述APK数据集进行预处理,包括:
使用APKTool工具对所述APK数据集中的所有应用程序进反编译操作;
当所述反编译操作成功后,得到一列的目录与文件,所述目录的子目录和文件与开发时的源码目录的组织结构一致。
在一种实现方式中,所述对所述Dalvik指令进行分类,得到所述Dalvik指令的分类信息,包括:
根据所述Dalvik指令的读写类型、操作数个数、操作数常量个数对所述Dalvik指令进行分类。
在一种实现方式中,所述根据训练后的隐马尔可夫模型以及N-gram模型,对加密API进行误用检测以及使用推荐操作,包括:
利用所述训练后的隐马尔可夫模型以及N-gram模型计算所述加密API调用序列数据集中的测试集中的所有加密API调用序列的得分;
当加密API调用序列的得分小于预设阈值,则判定所述加密API调用序列被误用;
当加密API调用序列的得分大于预设阈值,则判定所述加密API调用序列未被误用。
在一种实现方式中,所述根据训练后的隐马尔可夫模型以及N-gram模型,对加密API进行误用检测以及使用推荐操作,包括:
获取所述测试集中的未被误用的加密API调用序列,并构建加密API候选集;
若原始加密API调用序列位于候选加密API候选集中的预设位置时,则在所述预设位置处的加密API被推荐成功。
在一种实现方式中,所述预设阈值的设置方式,包括:
将所训练集中所有加密API调用序列并计算其得分;
将得分按降序排列,并取排序接近80%的位置的得分作为所述预设阈值。
第二方面,本发明提供一种加密API使用分析系统,其中,所述系统包括:
数据获取模块,用于获取APK数据集,并根据所述APK数据集得到加密API调用序列数据集,所述加密API调用序列数据集基于Dalvik指令的分类信息构建的;
模型训练模块,用于使用所述加密API调用序列数据集中的训练集以及验证集进行隐马尔可夫模型训练以及N-gram模型训练,得到训练后的隐马尔可夫模型和N-gram模型;
使用分析模块,用于根据训练后的隐马尔可夫模型以及N-gram模型,对加密API进行误用检测以及使用推荐操作。
第三方面,本发明提供一种智能终端,其中,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于执行上述方案任意一项所述的方法。
第四方面,本发明提供一种非临时性计算机可读存储介质,其中,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述方案中任意一项所述的方法。
有益效果:与现有技术相比,本发明提供了一种加密API使用分析方法及系统,所述方法包括:获取APK数据集,并根据所述APK数据集得到加密API调用序列数据集,所述加密API调用序列数据集基于Dalvik指令的分类信息构建的;使用所述加密API调用序列数据集中的训练集以及验证集进行隐马尔可夫模型训练以及N-gram模型训练,得到训练后的隐马尔可夫模型和N-gram模型;根据训练后的隐马尔可夫模型以及N-gram模型,对加密API进行误用检测以及使用推荐操作。本发明中的加密API调用序列数据集构建时引入符号分析技术,从而构建出正确使用加密API的数据集,且使用本发明训练得到的隐马尔可夫模型以及N-gram模型,可以在对加密API使用分析上效率明显提高,且效果更好。
附图说明
图1为本发明实施例提供的加密API使用分析方法的具体实施方式的流程图。
图2为本发明实施例提供的加密API使用分析方法的具体实现流程图。
图3为本发明实施例提供的加密API使用分析方法用于加密API推荐结果分析图。
图4是本发明实施例提供的加密API使用分析系统的原理框图。
图5是本发明实施例提供的智能终端的内部结构原理框图。
具体实施方式
为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
现有技术中对于API调用序列的预测分析,采用的是基于人工分析一定数量的API调用,并基于频繁出现的API调用推断出API调用约规,但是其严重依赖数据集的质量。或者是基于N-gram模型来实现的,但是现有技术中的N-gram模型约束条件较多,且对于API的要求较为严格,因此在对于API调用序列的预测分析效果并不好。而现有技术中采用CRYSL密码语言来将API调用序列进行约束,基本都受到领域的限制,且难以进行维护。因此,现在市场上主要的加密API调用规约,基本都是依赖人工定义,难以维护,且使用错误率高,缺乏正确使用加密API的数据集。
为了解决现有技术的问题,本实施例提供一种加密API使用分析方法,具体地,如图1和图2中所示,所述方法包括:
步骤S100、获取APK数据集,并根据所述APK数据集得到加密API调用序列数据集,所述加密API调用序列数据集基于Dalvik指令的分类信息构建的;
步骤S200、使用所述加密API调用序列数据集中的训练集以及验证集进行隐马尔可夫模型训练以及N-gram模型训练,得到训练后的隐马尔可夫模型和N-gram模型;
步骤S300、根据训练后的隐马尔可夫模型以及N-gram模型,对加密API进行误用检测以及使用推荐操作。
本发明中的加密API调用序列数据集构建时引入符号分析技术,从而构建出正确使用加密API的数据集,且使用本发明训练得到的隐马尔可夫模型以及N-gram模型,可以在对加密API使用分析上效率明显提高,且效果更好。
具体地,本实施例中的API就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的API而使操作系统去执行应用程序的命令。安卓操作系统的系统架构采用了分层架构的思想。主要分为四层:Linux内核层、安卓系统运行层、安卓应用框架层和应用程序层。各层次间分工明确。而安卓应用程序是由Java语言编写,并通过Dalvik虚拟机解释DEX可执行文件运行Dalvik字节码。Dalvik字节码由Java字节码转换而来,Dalvik字节码难以理解。
因此本实施例在构建加密API调用序列数据集时,首先获取到到获取APK(应用程序的安装包)数据集(即图2中的APK集),并对所述APK数据集进行预处理。具体地,在进行预处理时,由于安卓应用程序本质上是一个以“.apk”后缀结尾的安卓应用程序包,由被编译的dex可执行文件、resourses assets、certificates和XML manifest等文件构成。因此,本实施例可利用ApkTool工具(如apktook1,dex2jar2)对安卓应用程序进行反编译操作。反编译成功后,会生成一系列的目录与文件,这些目录的子目录和文件与开发时的源码目录组织结构一致,由此将Dalvik字节码编译成可读性高的smali文件。本实施例中的Smali文件代码篇幅较长,指令繁多,但是samli文件的格式相对比较固定,并且遵循相应的语法规则。
语法是语言的形式,指将符号组合形成格式合法的句子(或程序)的规则集。语法定义了语言各要素之间的形式关系,从而构成各种合法语句的结构描述。语法只描述语言的形式和结构,不考虑其含义。语义关注合法语句的含义,对编程语言而言,语义描述计算机执行程序而发生的行为。控制流程图(Control Flow Graph,CFG)与数据流程图(DataFlow Graph,DFG)是程序语义属性的典型代表。控制流程图是一个程序的抽象表现,代表了一个程序执行过程中会遍历到的所有路径,能反映一个程序的执行过程。控制流程图的实质是一个有向图,节点表示程序的语句,边表示程序的执行路径。数据流程图能反映程序运行过程中数据的流向、处理和存储情况。数据流分析是基于控制流的。
如图2中所示,当本实施例对所述APK数据集进行预处理后,本实施例可提取预处理后的所述APK数据集中每一个应用程序的执行路径,并构建Dalvik指令;然后对所述Dalvik指令进行分类,得到所述Dalvik指令的分类信息,并构建所述加密API调用序列数据集。具体地,由于控制流程图是一个程序的抽象表现,代表了一个程序执行过程中会遍历到的所有路径,能反映一个程序的执行过程。因此,在构建控制流程图的过程中,本实施例采用基于Dalvik指令的构建方式,每一个Dalvik指令为一个节点,具体提取预处理后的所述APK数据集中每一个应用程序的执行路径,并构建Dalvik指令。
由于安卓应用程序在开发时,可能包含废弃代码、以及大量在程序运行过程中不会被执行的代码,这部分代码在编写过程中并未考虑到代码的安全性、完整性、正确性。安卓应用程序可达方法的提取是为了排除这部分代码的影响,确保提取安卓加密API调用序列的正确性和完整性,同时可以降低提取安卓加密API调用序列的时间。在构建函数调用图的过程中,本实施例还使用开源工具FlowDroid生成对应安卓应用程序的函数调用图。由于安卓应用程序有多个可能的程序入口,FlowDroid同时还会构建一个main方法来描述可能的程序入口。
目前基于数据驱动的API使用分析仅获取API调用顺序信息,经常将API的参数信息忽略。因此现有技术中数据集构建方式不适用于安卓加密API调用序列分析,原因在于加密API使用分析不仅需要考虑加密API调用顺序的分析,还要考虑加密API参数使用情况的分析,比如加密算法的选取。为此,本实施例在构件加密API调用序列数据集时,根据所述Dalvik指令的读写类型、操作数个数、操作数常量个数对所述Dalvik指令进行分类,得到分类信息,然后基于所述分类信息构建所述加密API调用序列数据集。在本实施例中,所述根据Dalvik指令读写类型、操作数个数、操作数常量个数进行分类,一共分为14类,具体分类情况如表1所示,其中“inst_op”、“inst_array”和“inst_invoke”指令结构相对比较特殊。这三类指令在读取寄存器值以及更新寄存器值与指令时需要定义额外的操作。
表1 Dalvik指令分类
本实施例中通过对Dalvik指令进行分类,由于得到的分类信息的类别是由不同的字符符号区分,因此根据所述分类信息构建所述加密API调用序列数据集时,采用了符号分析技术,而基于符号分析技术所构建的加密API调用序列数据集可以更好地进行使用分析,并且由于不同类别的加密API在执行时为不同的执行路径,因此更为方面地对加密API进行调用。
在一种实现方式中,本实施例中的加密API调用序列数据集包括训练集、验证集和测试集,具体地,所述训练集、验证集以及测试集,可以分别有11856、3957、3953个安卓应用程序。所述训练集和验证集用于模型训练,本实施例可使用所述加密API调用序列数据集中的训练集以及验证集进行隐马尔可夫模型训练以及N-gram模型训练,得到训练后的隐马尔可夫模型和N-gram模型。所述隐马尔可夫模型、N-gram模型和RNN模型来自动化学习加密API使用规约。隐马尔可夫模型(hidden Markov mode,HMM)是一个统计学模型,它在语音识别、自然语言处理、生物信息等领域有着广泛的应用。N-gram模型是一种基于统计语言的模型,它被广泛使用在自然语言处理领域。在本实施例中,当训练好所述隐马尔可夫模型和N-gram模型,可采用所述隐马尔可夫模型和N-gram模型来对加密API调用序列是否误用进行检测。具体地,本实施例利用训练好的隐马尔可夫模型和N-gram模型来对算所述加密API调用序列数据集中的测试集中的所有加密API调用序列的得分;当加密API调用序列的得分小于预设阈值,则判定所述加密API调用序列被误用;当加密API调用序列的得分大于预设阈值,则判定所述加密API调用序列未被误用。在本实施例中,所述预设阈值的设置方式为:将所训练集中所有加密API调用序列并计算其得分;然后将得分按降序排列,并取排序接近80%的位置的得分作为所述预设阈值。
作为对比,本实施例还选用采用无符号方式的API训练成的隐马尔可夫模型和N-gram模型,与本实施例中采用符号方式的加密API调用序列训练得到的隐马尔可夫模型和N-gram模型,来对测试集中的加密API的使用情况进行分析,如表2中所示。
表2测试集中加密API使用分析
表中“SYM_HMM”为基于符号分析方式训练的最优隐马尔可夫模型(隐状态数为8);“SYM-NGRAM”为基于符号分析方式训练的N-gram模型
(N取值为5)。“NO_HMM”为基于无符号分析方式训练的隐马尔可夫模型(隐状态数为9);“NO_NGRAM”为基于无符号分析方式训练的N-gram模型(N取值为4)。“BASE”为基准线,取正样本和负样本各50%的检测准确率。。如表2所示,本文为了更直观展示加密API误用检测的效果,将正负样本进行替换,重新计算各项评价指标,在表中使用“T”表示。
实验结果显示,本实施例中基于符号分析方式训练的隐马尔可夫模型和N-gram模型分类效果相差细微。隐马尔可夫模型和N-gram模型的准确率分别为70.38%和71.23%,查准率为别为59.93%和61.60%,也就是说这两个模型在这两个评价指标中相差1%左右。再者,这两个模型的召回率分别为76.28%和72.83%。通过F1评价指标可知,本实施例中的,基于符号分析方式训练的隐马尔可夫模型分析效果略强于N-gram模型。
而传统的基于无符号分析方式训练的隐马尔可夫模型和N-gram模型分类效果如表2所示,这两个模型的准确率分别为57.23%和57.67%,查准率分别为47.68%和47.25%,召回率分别为81.10%和71.19%,F1值分别为60.05%和57.14%。这两个模型在这4个评价指标中均高于基准模型,说明具有一定的加密API调用序列分类能力。
总体来说,基于符号分析方式提高了模型对加密API调用序列的分析能力,原因在于符号分析使加密API调用序列包含更多参数信息,所训练得到的模型能够学习到更全面的加密API使用规约,不再只局限于基于无符号分析方式中的加密API调用顺序规约。
此外,本实施例还使用训练后的隐马尔可夫模型以及N-gram模型,对加密API进行使用推荐操作。具体地,本实施例获取所述测试集中的未被误用的加密API调用序列,并构建加密API候选集;若原始加密API调用序列位于候选加密API候选集中的预设位置(如位于候选加密API候选集中的TOP-N位置)时,则在所述预设位置处的加密API被推荐成功。
实验结果表明,本实施例提出的方法具有一定的加密API推荐能力。如图3所示,当K不大于10时,SYM_HMM推荐准确率迅速提高,TOP-7加密API推荐准确率达到80%。SYM_NGRAM加密API推荐表现优于隐马尔可夫模型,当K等于3时,加密API推荐准确率可达到90%。原因在于,SYM_HMM考虑参数,数据集中加密API调用序列分散度较高,使得隐马尔可夫模型隐状态作用丧失退化为2-gram模型。而基于无符号分析数据集的加密API使用推荐相比于基于符号分析加密API使用推荐,推荐准确率更好,原因同上考虑参数使数据集中加密调用序列更分散,降低加密API使用推荐准确率。本文不仅可以推荐加密API,还可以推荐加密API使用的参数。本文通过合并具有相同加密API名不同参数的加密API使用,进行了加密API不带参数的推荐。推荐结果如图3中SYM-HMM0和SYM-NGRAM0所示,其推荐准确率结果与基于无符号分析数据集的加密API使用推荐非常接近。
可见,本实施例提供了一种加密API使用分析方法及系统,所述方法包括:获取APK数据集,并根据所述APK数据集得到加密API调用序列数据集,所述加密API调用序列数据集基于Dalvik指令的分类信息构建的;使用所述加密API调用序列数据集中的训练集以及验证集进行隐马尔可夫模型训练以及N-gram模型训练,得到训练后的隐马尔可夫模型和N-gram模型;根据训练后的隐马尔可夫模型以及N-gram模型,对加密API进行误用检测以及使用推荐操作。本发明中的加密API调用序列数据集构建时引入符号分析技术,从而构建出正确使用加密API的数据集,且使用本发明训练得到的隐马尔可夫模型以及N-gram模型,可以在对加密API使用分析上效率明显提高,且效果更好。
如图4中所示,本发明实施例提供一种加密API使用分析系统,该装系统包括:数据获取模块10、模型训练模块20、使用分析模块30。具体地,所述数据获取模块10,用于获取APK数据集,并根据所述APK数据集得到加密API调用序列数据集,所述加密API调用序列数据集基于Dalvik指令的分类信息构建的。所述模型训练模块20,用于使用所述加密API调用序列数据集中的训练集以及验证集进行隐马尔可夫模型训练以及N-gram模型训练,得到训练后的隐马尔可夫模型和N-gram模型。所述使用分析模块30,用于根据训练后的隐马尔可夫模型以及N-gram模型,对加密API进行误用检测以及使用推荐操作。。
基于上述实施例,本发明还提供了一种智能终端,其原理框图可以如图5所示。该智能终端包括通过系统总线连接的处理器、存储器、网络接口、显示屏、温度传感器。其中,该智能终端的处理器用于提供计算和控制能力。该智能终端的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该智能终端的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种加密API使用分析方法。该智能终端的显示屏可以是液晶显示屏或者电子墨水显示屏,该智能终端的温度传感器是预先在智能终端内部设置,用于检测内部设备的运行温度。
本领域技术人员可以理解,图5中示出的原理框图,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的智能终端的限定,具体的智能终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种智能终端,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
获取APK数据集,并根据所述APK数据集得到加密API调用序列数据集,所述加密API调用序列数据集基于Dalvik指令的分类信息构建的;
使用所述加密API调用序列数据集中的训练集以及验证集进行隐马尔可夫模型训练以及N-gram模型训练,得到训练后的隐马尔可夫模型和N-gram模型;
根据训练后的隐马尔可夫模型以及N-gram模型,对加密API进行误用检测以及使用推荐操作。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
综上,本发明公开了一种加密API使用分析方法及系统,所述方法包括:获取APK数据集,并根据所述APK数据集得到加密API调用序列数据集,所述加密API调用序列数据集基于Dalvik指令的分类信息构建的;使用所述加密API调用序列数据集中的训练集以及验证集进行隐马尔可夫模型训练以及N-gram模型训练,得到训练后的隐马尔可夫模型和N-gram模型;根据训练后的隐马尔可夫模型以及N-gram模型,对加密API进行误用检测以及使用推荐操作。本发明中的加密API调用序列数据集构建时引入符号分析技术,并且在对加密API使用分析上效率明显提高,且效果更好。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种加密API使用分析方法,其特征在于,所述方法包括:
获取APK数据集,并根据所述APK数据集得到加密API调用序列数据集,所述加密API调用序列数据集基于Dalvik指令的分类信息构建的;
使用所述加密API调用序列数据集中的训练集以及验证集进行隐马尔可夫模型训练以及N-gram模型训练,得到训练后的隐马尔可夫模型和N-gram模型;
根据训练后的隐马尔可夫模型以及N-gram模型,对加密API进行误用检测以及使用推荐操作;
根据所述APK数据集得到加密API调用序列数据集,包括:
使用开源工具FlowDroid生成对应安卓应用程序的函数调用图得到加密API调用序列数据集。
2.根据权利要求1所述的加密API使用分析方法,其特征在于,所述获取APK数据集,并根据所述APK数据集得到加密API调用序列数据集,包括:
获取所述APK数据集,并对所述APK数据集进行预处理;
提取预处理后的所述APK数据集中每一个应用程序的执行路径,并构建Dalvik指令;
对所述Dalvik指令进行分类,得到所述Dalvik指令的分类信息,并构建所述加密API调用序列数据集。
3.根据权利要求1所述的加密API使用分析方法,其特征在于,所述获取所述APK数据集,并对所述APK数据集进行预处理,包括:
使用APKTool工具对所述APK数据集中的所有应用程序进反编译操作;
当所述反编译操作成功后,得到一列的目录与文件,所述目录的子目录和文件与开发时的源码目录的组织结构一致。
4.根据权利要求3所述的加密API使用分析方法,其特征在于,所述对所述Dalvik指令进行分类,得到所述Dalvik指令的分类信息,包括:
根据所述Dalvik指令的读写类型、操作数个数、操作数常量个数对所述Dalvik指令进行分类。
5.根据权利要求1所述的加密API使用分析方法,其特征在于,所述根据训练后的隐马尔可夫模型以及N-gram模型,对加密API进行误用检测以及使用推荐操作,包括:
利用所述训练后的隐马尔可夫模型以及N-gram模型计算所述加密API调用序列数据集中的测试集中的所有加密API调用序列的得分;
当加密API调用序列的得分小于预设阈值,则判定所述加密API调用序列被误用;
当加密API调用序列的得分大于预设阈值,则判定所述加密API调用序列未被误用。
6.根据权利要求5所述的加密API使用分析方法,其特征在于,所述根据训练后的隐马尔可夫模型以及N-gram模型,对加密API进行误用检测以及使用推荐操作,包括:
获取所述测试集中的未被误用的加密API调用序列,并构建加密API候选集;
若原始加密API调用序列位于候选加密API候选集中的预设位置时,则在所述预设位置处的加密API被推荐成功。
7.根据权利要求5所述的加密API使用分析方法,其特征在于,所述预设阈值的设置方式,包括:
将所训练集中所有加密API调用序列并计算其得分;
将得分按降序排列,并取排序接近80%的位置的得分作为所述预设阈值。
8.一种加密API使用分析系统,其特征在于,所述系统包括:
数据获取模块,用于获取APK数据集,并根据所述APK数据集得到加密API调用序列数据集,所述加密API调用序列数据集基于Dalvik指令的分类信息构建的;
模型训练模块,用于使用所述加密API调用序列数据集中的训练集以及验证集进行隐马尔可夫模型训练以及N-gram模型训练,得到训练后的隐马尔可夫模型和N-gram模型;
使用分析模块,用于根据训练后的隐马尔可夫模型以及N-gram模型,对加密API进行误用检测以及使用推荐操作;
根据所述APK数据集得到加密API调用序列数据集,包括:
使用开源工具FlowDroid生成对应安卓应用程序的函数调用图得到加密API调用序列数据集。
9.一种智能终端,其特征在于,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于执行上述权利要求1-7任意一项所述的方法。
10.一种非临时性计算机可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述权利要求1-7任意一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011110320.4A CN112199095B (zh) | 2020-10-16 | 2020-10-16 | 一种加密api使用分析方法及系统 |
PCT/CN2020/136140 WO2022077755A1 (zh) | 2020-10-16 | 2020-12-14 | 一种加密api使用分析方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011110320.4A CN112199095B (zh) | 2020-10-16 | 2020-10-16 | 一种加密api使用分析方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112199095A CN112199095A (zh) | 2021-01-08 |
CN112199095B true CN112199095B (zh) | 2022-04-26 |
Family
ID=74010371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011110320.4A Active CN112199095B (zh) | 2020-10-16 | 2020-10-16 | 一种加密api使用分析方法及系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112199095B (zh) |
WO (1) | WO2022077755A1 (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109753801A (zh) * | 2019-01-29 | 2019-05-14 | 重庆邮电大学 | 基于系统调用的智能终端恶意软件动态检测方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9917859B2 (en) * | 2015-10-20 | 2018-03-13 | Sophos Limited | Mitigation of anti-sandbox malware techniques |
CN106096405B (zh) * | 2016-04-26 | 2019-07-05 | 浙江工业大学 | 一种基于Dalvik指令抽象的Android恶意代码检测方法 |
CN107153789B (zh) * | 2017-04-24 | 2019-08-13 | 西安电子科技大学 | 利用随机森林分类器实时检测安卓恶意软件的方法 |
EP4020282A1 (en) * | 2017-10-13 | 2022-06-29 | Ping Identity Corporation | Methods and apparatus for analyzing sequences of application programming interface traffic to identify potential malicious actions |
CN108959924A (zh) * | 2018-06-12 | 2018-12-07 | 浙江工业大学 | 一种基于词向量和深度神经网络的Android恶意代码检测方法 |
CN109492355B (zh) * | 2018-11-07 | 2021-09-07 | 中国科学院信息工程研究所 | 一种基于深度学习的软件抗分析方法和系统 |
CN110097193B (zh) * | 2019-04-28 | 2021-03-19 | 第四范式(北京)技术有限公司 | 训练模型的方法及系统和预测序列数据的方法及系统 |
CN111523117A (zh) * | 2020-04-10 | 2020-08-11 | 西安电子科技大学 | 一种安卓恶意软件检测和恶意代码定位系统及方法 |
-
2020
- 2020-10-16 CN CN202011110320.4A patent/CN112199095B/zh active Active
- 2020-12-14 WO PCT/CN2020/136140 patent/WO2022077755A1/zh active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109753801A (zh) * | 2019-01-29 | 2019-05-14 | 重庆邮电大学 | 基于系统调用的智能终端恶意软件动态检测方法 |
Non-Patent Citations (1)
Title |
---|
基于深度学习的API误用缺陷检测;汪昕等;《软件学报》;20190531;第30卷(第5期);第1342-1358页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112199095A (zh) | 2021-01-08 |
WO2022077755A1 (zh) | 2022-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109766540B (zh) | 通用文本信息提取方法、装置、计算机设备和存储介质 | |
US11379227B2 (en) | Extraquery context-aided search intent detection | |
US11080597B2 (en) | Crowdsourced learning engine for semantic analysis of webpages | |
CN109815333A (zh) | 信息获取方法、装置、计算机设备和存储介质 | |
CN108170468B (zh) | 一种自动检测注释和代码一致性的方法及其系统 | |
Tran et al. | Does BLEU score work for code migration? | |
CN111176996A (zh) | 测试用例生成方法、装置、计算机设备及存储介质 | |
RU2722692C1 (ru) | Способ и система выявления вредоносных файлов в неизолированной среде | |
Ciurumelea et al. | Suggesting comment completions for python using neural language models | |
EP3832485A1 (en) | Question answering systems | |
CN112988595A (zh) | 动态同步测试方法、装置、设备及存储介质 | |
CN112580363A (zh) | 需求文档处理方法、装置、计算机设备及存储介质 | |
CN111178064B (zh) | 基于字段分词处理的信息推送方法、装置和计算机设备 | |
US10782942B1 (en) | Rapid onboarding of data from diverse data sources into standardized objects with parser and unit test generation | |
US20230281318A1 (en) | Constrained decoding for source code generation | |
CN110765152A (zh) | Sql提取方法、装置、计算机设备和存储介质 | |
CN112817877B (zh) | 异常脚本检测方法、装置、计算机设备和存储介质 | |
Alalfi et al. | An approach to clone detection in sequence diagrams and its application to security analysis | |
CN112199095B (zh) | 一种加密api使用分析方法及系统 | |
CN113778852B (zh) | 一种基于正则表达式的代码分析方法 | |
CN111161730A (zh) | 语音指令匹配方法、装置、设备及存储介质 | |
CN115422095A (zh) | 一种回归测试用例推荐方法、装置、设备及介质 | |
CN111796832B (zh) | 热补丁文件生成方法、装置、设备及存储介质 | |
WO2021056740A1 (zh) | 语言模型构建方法、系统、计算机设备及可读存储介质 | |
CN112084499A (zh) | 一种基于语法分析的0day攻击检测方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |