CN111026659B - 一种基于嵌入表示的移动应用回调分析研究方法 - Google Patents

一种基于嵌入表示的移动应用回调分析研究方法 Download PDF

Info

Publication number
CN111026659B
CN111026659B CN201911230621.8A CN201911230621A CN111026659B CN 111026659 B CN111026659 B CN 111026659B CN 201911230621 A CN201911230621 A CN 201911230621A CN 111026659 B CN111026659 B CN 111026659B
Authority
CN
China
Prior art keywords
callback
callback function
vector
analysis
node
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
CN201911230621.8A
Other languages
English (en)
Other versions
CN111026659A (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.)
Nankai University
Original Assignee
Nankai University
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 Nankai University filed Critical Nankai University
Priority to CN201911230621.8A priority Critical patent/CN111026659B/zh
Publication of CN111026659A publication Critical patent/CN111026659A/zh
Application granted granted Critical
Publication of CN111026659B publication Critical patent/CN111026659B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于嵌入表示的移动应用回调分析研究方法,该方法与传统代码分析技术和建模方法不同,提出利用智能化表示方法,对移动应用的回调结构以及相关代码进行上下文敏感的深度向量表示,进而基于嵌入式向量和分析结果进行相似度等新特性分析,并在此基础上,研究向量表示与这些特性的关系,进而进行可视化,从全新角度弥补传统回调分析方法在量化分析方面的不足。本发明的这种基于嵌入表示的移动应用回调分析研究方法,对软件工程领域近年来在代码向量表示及其应用方面的相关方法进行理解分析和实验尝试,对移动应用回调函数所面临的新问题,创造性的提出新的分析手段和解决方法,并在理论和实验方面验证其正确性和有效性。

Description

一种基于嵌入表示的移动应用回调分析研究方法
技术领域
本发明属于移动应用回调分析研究的技术领域,具体涉及一种基于嵌入表示的移动应用回调分析研究方法。
背景技术
当前移动设备已经成为人们生活必不可少的一部分。为了满足人们日益增长的应用需求,移动设备上的应用层出不穷。事件驱动和回调机制是移动应用软件的基本特征,基于事件驱动和回调机制的研究是各类相关分析工作的基础和关键,相关研究工作均需要对目标应用进行不同程度的回调机制分析来完成。
面向回调函数的分析工作作为移动应用代码分析的关键,吸引了众多相关研究,其中包括:(1)GUI层面的回调建模。俄亥俄州立大学的Atanas教授团队进行了细粒度的GUI回调以及生命周期回调建模,该建模过程采用静态的代码分析来处理上下文敏感的回调注册情况。爱荷华大学的WeiLe等人在考虑GUI建模的同时,还对API的调用关系进行处理,提出了预测回调摘要的概念。(2)回调相关的控制流和数据流分析。其中较为典型的是Patrick McDaniel和Eric Bodden教授的联合研究团队所实现的信息泄露静态检测工具FlowDroid,该工具在对应用代码的上下文、关键对象数据流以及生命周期回调函数进行了细致地建模和追踪。(3)组件间的回调连接和数据流传播分析。Bodden等人较早面向组件间通信传播进行相关研究,提出了Epicc,一种组件间通信的过程间映射模型,根据代码逻辑将Android应用的不同组件相连。(4)基于应用场景的回调分析。Mingyuan Xia等人提出了移动应用的动静审计概念,在此场景下首先利用静态分析技术建立扩展的调用图。Li等人构建了包依赖图获取恶意代码片段,并对应用代码进行分段建模,提取相应特征进行恶意片段分类。宾夕法尼亚大学的Chen等人为了得到精确且可扩展的应用代码克隆检测方案,建立了代码片段及函数之间的依赖关系模型Cendroid,该模型融合了包依赖图和控制流图的优势。
近年来,智能软件分析技术的兴起,为人们在软件分析问题上提供了新的解决思路,一些工作将人工智能、机器学习技术引入软件分析领域,开拓了新的分析视觉,取得了一些令人瞩目的成果。其中,利用智能化表示方法,将软件代码数据转化为可学习的向量表示,继而进行深度分析和预测,成为当前一项研究热点。例如,文献UnderstandingPrograms Through Embedded Abstracted Symbolic Traces利用Word2Vec词嵌入表示技术对符号执行之后的代码语句进行向量表示,而后深度分析了代码相似性、缺陷检测等问题;文献ExploringAPI embedding for API usages and applications则是从API的视角,利用Word2Vec技术对代码API的中间表示进行词嵌入向量化,而后研究API相似性、API移植等相关问题。此类无监督的向量化表示能够定量反映研究目标的上下文语义等信息,帮助完成传统分析方法难以涉及的分析工作。
虽然现有工作在代码的嵌入方面做了很多探索,但目前尚未出现专门关于移动应用,特别是针对其回调函数的词嵌入表示相关研究。本发明基于现有的研究基础提出了一种基于嵌入表示的移动应用回调分析研究方法。
发明内容
本发明提出利用智能化表示方法,对移动应用的回调结构以及相关代码进行上下文敏感的深度向量表示,进而基于嵌入式向量和分析结果进行相似度分析等新特性分析。
本发明提供的基于嵌入表示的移动应用回调分析研究方法包括以下步骤:
步骤1、移动应用的源码数据集收集和预处理;
步骤2、基于源码数据集,定义回调函数序列提取方法;
步骤3、根据提取的回调函数序列,定义中间抽象以及词嵌入向量方法;
步骤4、基于向量表示进行细粒度回调函数的相似性分析;
步骤5、基于向量表示进行回调向量距离及逻辑类比分析;
步骤6、基于向量表示进行回调函数节点与普通API节点的差异性分析。
本发明的具体设计实现如下:
1.步骤1所述的移动应用源码数据集收集和预处理,具体是指收集大量移动应用源码作为模型训练数据集,收集过程分为两个渠道,开源应用收集和第三方市场apk文件的收集。其中开源应用是在公开的开源移动应用发布平台,即FDroid和Fossdroid进行收集的;第三方市场的应用源码可以通过对应用市场所发布的Android应用apk文件进行反编译得到。
2.步骤2所述的基于源码数据集,定义回调函数序列提取方法,具体是指对所获取的移动应用源码进行回调函数实体的自动化识别和提取。首先,为了方便步骤3的词嵌入向量,将步骤1的代码用抽象语法树转化为AST节点,即一种基于代码语法结构的抽象表示方法;其次,由于事件驱动的性质,Android应用的回调函数的执行是无序的,通过构建回调函数序列图CBS-Graph来模拟特定的移动应用中回调函数的运行,由辅助的虚拟节点和直接相连的边s的集合组成回调函数序列图CBS-Graph,捕捉了回调函数层级上的上下文语义;对于有生命周期的回调函数,用消除策略来处理未执行生命周期的回调函数,即用一个组件的完全生命周期图来初始化CBS-Graph,然后去除每个隐藏的辅助的虚拟节点,并为每个辅助的虚拟节点的前驱后继对生成直接相连的边;对没有生命周期的回调函数,先设置两个辅助的虚拟节点,即开始节点和结束节点来标记活动区域,然后将所有没有生命周期的回调函数放入这个活动区域并在每对间生成两个直接相连的边s,再从开始节点到所有没有生命周期的回调函,与从没有生命周期的回调函到结束节点生成直接相连的边s;对于跳转,将组件的开始和结束状态分别用两个辅助的虚拟节点,即组件的开始节点和组件的结束节点表示,然后对每个跳转,从源组件中的组件的结束节点到目标组件中的每个组件的开始节点生成一个直接相连的边。
为了获取回调函数序列样本,本发明创造性地提出了随机游走算法,即向沿着回调函数的路径添加了合理的权重,用由上一个和下一个状态的辅助的虚拟节点之间的最短距离计算出的权重与标准化常亮的比值表示当前路径,以获得足够多的回调函数而不陷入局部循环,具体计算公式为
Figure BDA0002303448010000041
其中si和si-1分别表示第i和i-1次游走状态,
Figure BDA0002303448010000042
v和v’分别表示上一个、当前和下一个状态的辅助的虚拟节点,Zv表示正规化常数,
Figure BDA0002303448010000043
表示沿着节点
Figure BDA0002303448010000044
和v’之间的最短距离dvv’计算的游走可能性的权重。
3.步骤3所述的根据提取的回调函数序列,定义中间抽象,具体是指对所提取的回调函数以及相关代码元素进行中间形式的抽象表征,设计抽象规则。为了使得该中间抽象能够有效支持后续词向量表示的学习训练,该代码中间抽象能够全面表达回调语句的主体和对应的逻辑关系,在发明中对于回调函数序列,将其返回值类型、函数名、参数列表进行了标准化定义,对于参数列表只保存其参数的类型,去掉参数名,对于左右括号也进行了定义。
词嵌入向量方法,具体是指将得到的中间抽象形式进行上下文语义和序列相关的数值化向量表示。具体是首先将步骤2中提取出的所有移动应用数据集的回调函数序列通过步骤3处理后的中间抽象词作为语料库,将每一个method的回调函数序列的中间抽象作为一个sentence;然后将一个目标序列节点ci,如一个回调函数节点,通过一个非线性激活函数sigmoid函数表示为两个部分的融合,第一部分是回调函数向量(用cbi表示回调函数向量的集合),第二部分是回调函数的各个内部向量的和,如回调函数的各个内部向量的和为vi,j,vi,j的计算方法是将回调函数向量和代码向量(用coi,j表示回调函数内部代码向量的集合)进行点乘,具体计算公式为:
Figure BDA0002303448010000051
vi,j=σ(Wv,∈(cbi))⊙∈(coi,j))
Figure BDA0002303448010000052
Figure BDA0002303448010000053
Figure BDA0002303448010000054
然后,将回调函数向量ci和回调函数内部AST节点vi,j带入词向量嵌入模型——Skip-Gram模型,模型的损失函数表示为Skip-Gram模型的回调函数序列级别的损失和回调函数内部级别的损失这两部分的和,具体计算公式如上式所示,其中C代表回调函数虚拟节点的集合,|C|表示回调函数虚拟节点的数量,Wc与Wv是相关权重集合,维度分别为d*|C|和d*|Ci|,d是嵌入向量的维度。
最终形成嵌入模型Callback2Vec,既捕捉了回调函数序列的上下文语义,又保留了回调函数中代码流的结构。
4.步骤4所述的基于向量表示进行多粒度回调函数的相似性分析,具体是指相似度分析主考虑回调函数实体向量表示的数值相似度及其细粒度解释含义,和有生命周期的回调函数和无生命周期的回调函数在嵌入中表现的差异性。首先用一个匹配程序从整个节点词汇表中选择回调函数子集,然后进行相似对的统计,根据统计从在同一组件中的共现频率和回调函数类型两个角度分析上下文语义。回调函数节点的相似对通过其嵌入向量的欧氏距离与设定的阈值的比较得到,通过计算前100个相似对在相同组件中的共现频率,即包含回调函数不同组件的数量的比值,得到回调函数共现与向量相似度的关系,具体实验结果如表1所示,
表1:回调函数相似对分析结果
Embedding #SameT #Lc #Nlc #Total #FreT #FreL
Callback2Vec 1414 62 1352 1634 0.412 0.008
FSG 1391 50 1341 2228 0.396 0.013
其中我们的对比方法FSG(flat Skip Gram)表示用Skip Gram的不考虑回调函数序列的嵌入方法,在本发明的嵌入学习中与Callback2Vec用相同的模型环境。
为了研究有生命周期的回调函数和无生命周期的回调函数在嵌入中表现的差异性,对两种回调函数做二分类,ROC与可视化结果见附图2,其中(a)图是两种方法的ROC,即接受者操作特性曲线,横坐标是假阳性率(False Positive Rate),纵坐标是真阳性率(True Positive Rate),Callback2Vec方法的AUC(Area Under Roc Curve),即ROC曲线下的面积,为0.837,而FSG方法的AUC只有0.718;(b)图是用Callback2Vec方法得到的有生命周期回调函数和无生命周期回调函数向量可视化结果,可以看出两种回调函数基本上被区别开来了;(c)图是FSG方法得到的有生命周期回调函数和无生命周期回调函数向量可视化结果,可以看出两者在一部分区域是零散分布、无法区别开来的。
5.步骤5所述的基于向量表示进行回调向量距离及逻辑类比分析,具体是指研究相似的回调向量差值是否反映了相似的实体关系。首先手动选择相同函数下的113个回调函数对,并根据Android SDK文档中的对每个回调函数的描述分为8组。在每组内为其它对随机选择标准对<a1,a2>,选取组内某个回调函数节点b1,并预测另一个节点,具体公式为:
Figure BDA0002303448010000071
如果预测列表的前3个中出现正确的回调函数节点,则得到一个命中结果最终统计结果命中率。总体的命中率是总体预测结果中命中数量的比值,具体结果如表2所示,
表2:回调向量距离及逻辑类比分析结果
Figure BDA0002303448010000072
其中#TC表示总个数,#Acc-C2V和#Acc-FSG分别表示Callback2Vec和FSG的准确率。
6.步骤6所述的基于向量表示进行回调函数与普通API节点的差异性分析,具体是指两种词嵌入方法在处理AST节点和回调函数的嵌入与api节点的嵌入是否有明显的差异性。Callback2Vec通过合并回调函数层级和AST节点层级的损失函数来处理移动应用的嵌入,而FSG(flat Skip Gram)将回调函数和AST节点处理为相同类型的输入,本发明通过两个角度的分析来研究两种词嵌入方法在处理回调函数嵌入和api节点嵌入是否有明显区别。第一个角度是涉及到普通api的重新学***均命中率如表3所示,
表3:API节点类比分析结果
Embedding #AvgFre(Sim) #AvgFre(Non-sim) #HitRate
Callback2Vec 0.17 0.013 0.779
FSG 0.226 0.027 0.745
第二个角度是研究回调函数嵌入向量和api节点嵌入向量的差异性,其中(a)图是两种方法的ROC,即接受者操作特性曲线,横坐标是假阳性率(False Positive Rate),纵坐标是真阳性率(True Positive Rate),Callback2Vec方法的AUC(Area Under Roc Curve),即ROC曲线下的面积,为0.855,而FSG方法的AUC只有0.735;(b)图是用Callback2Vec方法得到的回调函数嵌入向量和api节点向量的可视化结果,可以看出二者基本上被区别开来了;(c)图是FSG方法得到的回调函数嵌入向量和api节点向量可视化结果,可以看出两者在很大一部分区域是零散分布、无法区别开来的。
本发明的优点和积极效果:
本发明提出了一种基于嵌入表示的移动应用回调分析研究方法,对移动应用的回调函数以及相关代码逻辑进行深度向量表示,继而进行相似度等新特性分析,并在此基础上,研究向量表示与这些特性的关系,以及是否能够帮助进行回调层面的分析应用。通过研究这些回调相关的向量表示和基础特性,将机器学习等智能技术引入移动代码分析领域,回答了传统方法无法解决的回调函数层面的代码分析等问题,回答了传统方法无法回答的回调函数定量分析关键问题,开辟移动应用缺陷检测新视角,使得缺陷预测可以向着数值化、细粒度、语义相关等方向发展。
附图说明
图1为本发明整体框架图
图2为不同回调函数类型的嵌入差异性比较结果
图3为回调函数嵌入向量和api节点嵌入向量的差异性分析结果
具体实施方式
下面结合附图和具体实施例对本发明技术方案做进一步的详细说明,以使本领域的技术人员可以更好的理解本发明并给予实施。
步骤1、移动应用源码数据集的收集以及预处理
根据本发明,移动应用源码数据集的收集主要有两种渠道,首先是在公开的开源移动应用发布平台FDroid和Fossdroid收集开源应用;其次是第三方应用市场所发布的Android应用apk文件;
对于数据集的预处理,从FDroid和Fossdroid下载的是已经开源的数据集,不需要处理;从第三方应用市场收集的Android应用apk文件通过反编译得到其源码。
步骤2、基于源码数据集,定义回调函数序列提取方法以及定义中间抽象
具体是指对所获取的移动应用源码进行回调函数实体的自动化识别和提取。先将代码用抽象语法树转化为AST节点,即一种基于代码语法结构的抽象表示方法;再通过构建回调函数序列图CBS-Graph来模拟特定的移动应用中回调函数的运行,由辅助的虚拟节点和直接相连的边s的集合组成回调函数序列图CBS-Graph,捕捉了回调函数层级上的上下文语义。通过随机游走算法获取回调函数序列样本,由于dvv’的值一定在0,1,2的范围内,本发明为不同的dvv’值设置了三条游走权重,即p1,p2和p3,因此向新节点还是旧节点的游走方向被概率控制。基于回调函数序列图CBS-Graph,实现了回调函数元素在控制流序列上的提取工作,保存了上下文语义和序列关系。
步骤3、根据提取的回调函数序列以及中间抽象定义词嵌入向量方法
具体是指将得到的中间抽象形式进行上下文语义和序列相关的数值化向量表示,首先进行基于提取的中间抽象进行构建语料库,然后基于语料库进行将回调函数序列的中间抽象表示为向量,具体是将按照如下公式:
Figure BDA0002303448010000101
得到的回调函数序列表示为向量,具体的向量形式如下列式子:
Figure BDA0002303448010000102
vi,j=σ(Wv,∈(cbi))⊙∈(coi,j))
Figure BDA0002303448010000103
Figure BDA0002303448010000104
Figure BDA0002303448010000105
步骤4、基于向量表示进行多粒度回调函数的相似度分析
具体是指研究相似的回调向量差值是否反映了相似的实体关系以及有生命周期的回调函数和无生命周期的回调函数在嵌入中表现的差异性。由表1:
表1:回调函数相似对分析结果
Embedding #SameT #Lc #Nlc #Total #FreT #FreL
Callback2Vec 1414 62 1352 1634 0.412 0.008
FSG 1391 50 1341 2228 0.396 0.013
通过Callback2Vec和FSG,共获得1634和2228个相似对,属于相同回调函数类型的相似对数量分别为86.5%和62.4%,其中属于没有生命周期的回调函数的数量分别为82.7%和60.2%,可见两种嵌入方法的差异非常明显,回调函数序列在Callback2Vec中被捕捉,提供了属于相同类型回调函数的相对接近的上下文。两种嵌入方法中一些相似度最高对的共现频率分别为41.2%和39.6%,频率都比较高表示相似内容可能存在于不同的组件中,本发明计算了100个相似度最低的对(#FreL)的共现频率作为对比,在两种嵌入方法的结果只有0.8%和1.3%,表明了回调函数共现频率与嵌入相似度的高度相关性。由附图2,在Callback2Vec中两种回调函数类型的界限更加明显,Callback2Vec的ACU值为0.837,远远高于FSG的0.718,即本发明的词嵌入向量方法在细粒度上模拟了回调函数的表现,区分了有生命周期的回调函数和无生命周期的回调函数。
步骤5、基于向量表示进行回调向量距离分析
具体是指研究相似的回调向量差值是否反映了相似的实体关系,以此进行回调实体的主题类比分析。首先手动选择相同函数下的113个回调函数对,并根据Android SDK文档中的对每个回调函数的描述分为8组。在每组内为其它对随机选择标准对<a1,a2>,选取组内某个回调函数节点b1,并预测另一个节点,具体公式为:
Figure BDA0002303448010000121
如果预测列表的前3个中出现正确的回调函数节点,则得到一个命中结果最终统计结果命中率。总体的命中率是总体预测结果中命中数量的比值,具体结果如表2所示:
表2:回调向量距离及逻辑类比分析结果
Figure BDA0002303448010000122
Callback2Vec的命中率表现远好于FSG,Callback2Vec中类比结果与回调函数的功能与语义高度相关,也证明了随机游走算法和CBS-Graph构造的有效性。
步骤6、基于向量表示进行回调函数与普通API节点的差异性分析具体是指回调函数的嵌入与api节点的嵌入是否有明显的差异性,分为两方面的分析。一方面由表3可见:
表3:API节点类比分析结果
Embedding #AvgFre(Sim) #AvgFre(Non-sim) #HitRate
Callback2Vec 0.17 0.013 0.779
FSG 0.226 0.027 0.745
Callback2Vec中前100个相似对的共现频率明显减少了,然而前100个相似对和相似性最低的100个对的频率差仍然明显,表示两种词嵌入向量方法都可以捕捉到api嵌入的上下文和位置的关系;另一方面由附图3可见,Callback2Vec比FSG更好地从回调函数节点中区分出api节点,因为Callback2Vec的层级结构将回调函数嵌入和AST节点嵌入处理为不用训练模型的不同层级,而FSG用统一的Word2Vec模型来训练两种不同类型的节点。

Claims (5)

1.一种基于嵌入表示的移动应用回调分析研究方法,其特征在于含有以下步骤:
步骤1、移动应用的源码数据集收集和预处理;
步骤2、基于源码数据集,定义回调函数序列提取方法;
步骤3、根据提取的回调函数序列,定义中间抽象以及词嵌入向量方法;
步骤4、基于向量表示进行多粒度回调函数的相似性分析;
步骤5、基于向量表示进行回调向量距离及逻辑类比分析;
步骤6、基于向量表示进行回调函数与普通API节点的差异性分析;
步骤2所述的基于源码数据集,定义回调函数序列提取方法,具体是指对所获取的移动应用源码进行回调函数实体的自动化识别和提取,首先将步骤1的代码用抽象语法树转化为AST节点,即一种基于代码语法结构的抽象表示方法;然后通过构建回调函数序列图CBS-Graph来模拟特定的移动应用中回调函数的运行,由辅助的虚拟节点和直接相连的边的集合组成回调函数序列图CBS-Graph,对于有生命周期的回调函数,用消除策略来处理未执行生命周期的回调函数,即用一个组件的完全生命周期图来初始化CBS-Graph,然后去除每个隐藏的辅助的虚拟节点,并为每个辅助的虚拟节点的前驱后继对生成直接相连的边;对没有生命周期的回调函数,先设置两个辅助的虚拟节点,即开始节点和结束节点来标记活动区域,然后将所有没有生命周期的回调函数放入这个活动区域并在每对间生成两个直接相连的边,再从开始节点到所有没有生命周期的回调函数,与从没有生命周期的回调函到结束节点生成直接相连的边;对于跳转,将组件的开始和结束状态分别用两个辅助的虚拟节点,即组件的开始节点和组件的结束节点表示,然后对每个跳转,从源组件中的组件的结束节点到目标组件中的每个组件的开始节点生成一个直接相连的边;为了获取回调函数序列样本,采用随机游走算法,即向沿着回调函数的路径添加了合理的权重,用由上一个和下一个状态的辅助的虚拟节点之间的最短距离计算出的权重与标准化常亮的比值表示当前路径,以获得足够多的回调函数而不陷入局部循环,从而实现回调函数元素在控制流序列上的提取工作,保存了上下文语义和序列关系;
步骤3所述的根据提取的回调函数序列,定义中间抽象以及词嵌入向量方法,具体是指对所提取的回调函数以及相关代码元素进行中间形式的抽象表征,设计抽象规则,为了使得该中间抽象能够有效支持后续词向量表示的学习训练,该代码中间抽象能够全面表达回调语句的主体和对应的逻辑关系;
所述的词嵌入向量方法,具体是指将得到的中间抽象形式进行上下文语义和序列相关的数值化向量表示,首先将步骤2中提取出的所有移动应用数据集的回调函数序列通过步骤3处理后的中间抽象词作为语料库,将每一个method的回调函数序列的中间抽象作为一个sentence;然后将一个目标序列节点ci,如一个回调函数节点,通过一个非线性激活函数sigmoid函数表示为两个部分的融合,第一部分是回调函数向量,第二部分是回调函数的各个内部向量的和,如回调函数的各个内部向量的和为vi,j,vi,j的计算方法是将回调函数向量和代码向量进行点乘,具体计算公式如下:
Figure FDA0004097215900000031
vi,j=σ(Wv,∈(cbi))⊙∈(coi,j))
Figure FDA0004097215900000032
Figure FDA0004097215900000033
Figure FDA0004097215900000034
其中:cbi表示回调函数向量的集合,coi,j表示回调函数内部代码向量的集合,ci表示回调函数向量,vi,j表示回调函数内部AST节点,C代表回调函数虚拟节点的集合,|C|表示回调函数虚拟节点的数量,Wc与Wv是相关权重集合;
然后,将回调函数向量ci和回调函数内部AST节点vi,j带入词向量嵌入模型——Skip-Gram模型,模型的损失函数表示为Skip-Gram模型的回调函数序列级别的损失和回调函数内部级别的损失这两部分的和;再将回调函数向量ci与内部AST节点vi,j喂入skip-gram模型进行训练,其中损失函数是回调函数序列层级和回调函数内部层级两部分的skip-gram的损失和;最后由公式得出回调函数序列节点和内部节点的预测概率,词向量的数值关系可以反映上下文语义关系以及函数实体的出现序列关系。
2.根据权利要求1所述的基于嵌入表示的移动应用回调分析研究方法,其特征在于:步骤1所述的移动应用的源码数据集收集和预处理,具体是指收集大量移动应用源码作为模型训练数据集,收集过程分为两个渠道,开源应用收集和第三方市场apk文件的收集,其中开源应用是在公开的开源移动应用发布平台,即FDroid和Fossdroid进行收集的;第三方市场的应用源码可以通过对应用市场所发布的Android应用apk文件进行反编译得到。
3.根据权利要求1所述的一种基于嵌入表示的移动应用回调分析研究方法,其特征在于步骤4所述的基于向量表示进行多粒度回调函数的相似性分析,具体是指相似度分析主要考虑回调函数实体向量表示的数值相似度及其多粒度解释含义,和有生命周期的回调函数和无生命周期的回调函数在嵌入中表现的差异性,首先用一个匹配程序从整个节点词汇表中选择回调函数子集,然后进行相似对的统计,根据统计从在同一组件中的共现频率和回调函数类型两个角度分析上下文语义;回调函数节点的相似对通过其嵌入向量的欧氏距离与设定的阈值的比较得到,通过计算前100个相似对在相同组件中的共现频率,即包含回调函数不同组件的数量的比值,得到回调函数共现与向量相似度的关系。
4.根据权利要求1所述的一种基于嵌入表示的移动应用回调分析研究方法,其特征在于步骤5所述的基于向量表示进行回调向量距离及逻辑类比分析,具体是指研究相似的回调向量差值是否反映了相似的实体关系,首先手动选择相同函数下的113个回调函数对,并根据Android SDK文档中的对每个回调函数的描述分为8组,在每组内为其它对随机选择标准对<a1,a2>,选取组内某个回调函数节点b1,并预测另一个节点,如果预测列表的前3个中出现正确的回调函数节点,则得到一个命中结果最终统计结果命中率,总体的命中率是总体预测结果中命中数量的比值。
5.根据权利要求1所述的一种基于嵌入表示的移动应用回调分析研究方法,其特征在于步骤6所述的基于向量表示进行回调函数与普通API节点的差异性分析,具体是指两种词嵌入方法在处理AST节点和回调函数的嵌入与api节点的嵌入是否有明显的差异性,Callback2Vec通过合并回调函数层级和AST节点层级的损失函数来处理移动应用的嵌入,对比方法FSG将回调函数和AST节点处理为相同类型的输入,通过两个角度的分析来研究两种词嵌入方法在处理回调函数嵌入和api节点嵌入是否有明显区别,第一个角度是涉及到普通api的重新学习相似性和逻辑类比,首先计算由两种词嵌入方法分别产生的前100个api相似对和100个相似度最低的对的共现频率,然后选出120个类比对,并分成14组,对其进行api节点的类比分析,第二个角度是研究回调函数嵌入向量和api节点嵌入向量的差异性,对两种类型的节点做二分类,得到ROC与可视化结果。
CN201911230621.8A 2019-12-05 2019-12-05 一种基于嵌入表示的移动应用回调分析研究方法 Active CN111026659B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911230621.8A CN111026659B (zh) 2019-12-05 2019-12-05 一种基于嵌入表示的移动应用回调分析研究方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911230621.8A CN111026659B (zh) 2019-12-05 2019-12-05 一种基于嵌入表示的移动应用回调分析研究方法

Publications (2)

Publication Number Publication Date
CN111026659A CN111026659A (zh) 2020-04-17
CN111026659B true CN111026659B (zh) 2023-04-21

Family

ID=70207944

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911230621.8A Active CN111026659B (zh) 2019-12-05 2019-12-05 一种基于嵌入表示的移动应用回调分析研究方法

Country Status (1)

Country Link
CN (1) CN111026659B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113139185B (zh) * 2021-04-13 2023-09-05 北京建筑大学 基于异质信息网络的恶意代码检测方法及***
CN113900923B (zh) * 2021-08-16 2024-07-12 中国人民解放军战略支援部队信息工程大学 一种跨指令集架构的二进制函数相似性检查***及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101945285A (zh) * 2010-09-29 2011-01-12 广州市聚晖电子科技有限公司 一种嵌入式互动应用服务转编码***
CN102024273A (zh) * 2010-12-10 2011-04-20 中国人民解放军国防科学技术大学 基于隐式向量空间的非刚性注册方法
CN102043832A (zh) * 2010-11-23 2011-05-04 苏州阔地网络科技有限公司 一种网页上实现跨域请求回调的方法
EP3223155A1 (en) * 2016-03-25 2017-09-27 Worldline Method for computing equivalence between two execution models

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101923508B (zh) * 2009-06-12 2012-12-19 中兴通讯股份有限公司 一种嵌入式***中的异常处理方法及装置
CN101902372B (zh) * 2010-08-03 2012-02-15 南开大学 基于多分形小波的网络流量并行生成方法
CN106845235B (zh) * 2017-01-11 2019-09-13 中科院微电子研究所昆山分所 一种基于机器学***台回调函数检测方法
CN106874764B (zh) * 2017-01-16 2019-10-29 南开大学 一种基于回调函数建模自动生成Android应用回调序列的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101945285A (zh) * 2010-09-29 2011-01-12 广州市聚晖电子科技有限公司 一种嵌入式互动应用服务转编码***
CN102043832A (zh) * 2010-11-23 2011-05-04 苏州阔地网络科技有限公司 一种网页上实现跨域请求回调的方法
CN102024273A (zh) * 2010-12-10 2011-04-20 中国人民解放军国防科学技术大学 基于隐式向量空间的非刚性注册方法
EP3223155A1 (en) * 2016-03-25 2017-09-27 Worldline Method for computing equivalence between two execution models

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
嵌入式智能家居监控***的设计与实现;张小梅;陆俊;彭冰沁;刘宏;;微计算机信息(第02期);全文 *

Also Published As

Publication number Publication date
CN111026659A (zh) 2020-04-17

Similar Documents

Publication Publication Date Title
CN106874898B (zh) 基于深度卷积神经网络模型的大规模人脸识别方法
CN105389326B (zh) 基于弱匹配概率典型相关性模型的图像标注方法
CN103077720B (zh) 一种说话人识别方法及***
CN106997474A (zh) 一种基于深度学习的图节点多标签分类方法
CN113761893B (zh) 一种基于模式预训练的关系抽取方法
CN111026659B (zh) 一种基于嵌入表示的移动应用回调分析研究方法
CN109446333A (zh) 一种实现中文文本分类的方法及相关设备
CN112507077B (zh) 基于关系图注意力神经网络的事件时序关系识别方法
CN113821799B (zh) 基于图卷积神经网络的恶意软件多标签分类方法
CN113961241A (zh) 一种基于gat图神经网络模型的代码克隆检测方法
CN116305119A (zh) 基于预测指导原型的apt恶意软件分类方法和装置
CN113904844B (zh) 基于跨模态教师-学生网络的智能合约漏洞检测方法
CN115329088A (zh) 图神经网络事件检测模型的鲁棒性分析方法
CN103679034A (zh) 一种基于本体的计算机病毒分析***及其特征提取方法
CN114897085A (zh) 一种基于封闭子图链路预测的聚类方法及计算机设备
CN117725592A (zh) 一种基于有向图注意力网络的智能合约漏洞检测方法
CN110955892B (zh) 一种基于机器学习和电路行为级特征的硬件木马检测方法
CN115829712A (zh) 数据信息安全分级方法及装置
CN113656556B (zh) 一种文本特征抽取方法及知识图谱构建方法
CN114862588A (zh) 一种面向区块链交易行为的异常检测方法
Yu et al. Information Security Field Event Detection Technology Based on SAtt‐LSTM
CN116628695A (zh) 基于多任务学习的漏洞挖掘方法及装置
CN111274894A (zh) 一种基于改进YOLOv3的人员在岗状态检测方法
CN109993231A (zh) 一种基于频繁项集的多标签分类方法
Shi et al. Label-Aware Calibration and Relation-Preserving in Visual Intention Understanding

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