The invention discloses a method for automatically generating Android application callback callback function based on sequence modeling, this method considers the life cycle of the callback function, GUI callback function and drive system of the callback function, in the pre design and a Android information database based on the completed callback function, pretreatment callback mapping of source program to get to the callback callback function set, non set and callback list mapping model is based on data, application component within the registration lifecycle callback relationship and relationship between components and the jump relationship of unity of abstract and generate callback sequence model. The method based on the callback function modeling automatically generates the callback sequence of Android application, and the modeling is comprehensive and uniform, and the execution speed is fast, and the practice proves that the method is reliable. Can be used for static analysis and internal callback modeling in applications on the Android platform.
【技术实现步骤摘要】
一种基于回调函数建模自动生成Android应用回调序列的方法
本专利技术属于Android平台上应用程序的静态分析和内部回调建模
,具体涉及一种基于回调函数建模自动生成Android应用回调序列的方法。
技术介绍
当前移动设备已经成为人们生活必不可少的一部分。为了满足人们日益增长的应用需求,移动设备上的应用层出不穷。其中基于Android平台的应用数量巨大并且仍在持续增长,大量的Android平台上的应用被证明具有功能或安全性方面的问题。因此,确保移动应用功能的正确性和使用的安全性越来越成为人们的关键需求。对Android应用进行安全检查,静态分析,需要将apk文件反编译成介于java代码和二进制码之间的smali代码,并对smali代码进行静态分析。区别于传统的桌面应用程序,Andorid系统具有事件驱动的特性,虽然这个特性为其带来诸多用户体验的优势,然而高度的交互性不可避免的增加了程序分析和测试的难度。因为Android平台的事件驱动特性,在对Android应用进行静态分析基础上创建相应模型的方法比直接对源码进行分析要更具优势。基于目前工作,能够总结以下两个结论:1)回调函数序列,作为Android系统的一项主要特性,在分析和测试移动应用的过程中占据关键地位。以此为基础的回调函数序列提取技术弥补了传统程序分析方法的不足。与传统方法不同,回调函数序列不再考虑程序的控制流或数据流,而是关注事件序列的发生和相关特征的更新处理。因此,回调函数序列能够解决由事件不确定性引起的逻辑问题,如事件异常,回调函数序列违法等,而这些问题利用传统的分析技术是难 ...
【技术保护点】
一种基于回调函数建模自动生成Android应用回调序列的方法,其特征在于含有以下步骤:步骤1、搭建Android回调信息库;步骤2、以Android应用的smali类型源码为输入,进行函数‑回调映射预处理;步骤3、根据生命周期时序关系,生成生命周期回调序列;步骤4、识别注册或释放注册动作的关键连接点,生成由注册或释放注册引起的非生命周期回调序列;步骤5、识别Activity跳转及Service跳转动作的关键连接点,生成跳转链接;步骤6、生成由Activity跳转和Service跳转引起的非生命周期回调序列。
【技术特征摘要】
1.一种基于回调函数建模自动生成Android应用回调序列的方法,其特征在于含有以下步骤:步骤1、搭建Android回调信息库;步骤2、以Android应用的smali类型源码为输入,进行函数-回调映射预处理;步骤3、根据生命周期时序关系,生成生命周期回调序列;步骤4、识别注册或释放注册动作的关键连接点,生成由注册或释放注册引起的非生命周期回调序列;步骤5、识别Activity跳转及Service跳转动作的关键连接点,生成跳转链接;步骤6、生成由Activity跳转和Service跳转引起的非生命周期回调序列。2.根据权利要求1所述的基于回调函数建模自动生成Android应用回调序列的方法,其特征在于步骤1所述的Android回调信息库包含白名单集、注册关系集、释放注册关系集、组件间跳转函数集和回调函数集。3.根据权利要求1所述的基于回调函数建模自动生成Android应用回调序列的方法,其特征在于步骤2所述的进行函数-回调映射预处理的算法方法是,首先遍历由无用代码所构成的白名单之外的有效函数定义,标记每个函数的前驱与后继,识别搜索到的函数是否为回调函数,得到回调函数集合callbackSet以及被标记的开发者自定义的非回调函数集合funSignedSet;之后基于这两个集合,以每一个回调函数作为调用者,即前驱函数,依次搜索被调用者,即后继非回调函数,并且迭代搜索后继,直到没有后继的非回调函数,在遍历过程中,记录该初始回调函数和整个搜索调用顺序从而生成函数-回调映射列表的一条记录,该列表反映每一对非回调函数与其相应的回调入口的映射关系。4.根据权利要求3所述的基于回调函数建模自动生成Android应用回调序列的方法,其特征在于步骤3所述的生成生命周期回调序列,以组件类型及组件源码作为输入,其中组件类型集合为{activity,service,receiver,other},首先为每一个组件添加三个辅助节点onActiveStart,onActiveEnd以及onTerminal,用于标识组件的如下状态:运行开始,运行结束和销毁结束,以此来显式限定组件的活动域以及跳转时机;然后生成对应组件类型的完备生命周期图ELG;之后在步骤2得到的callbackSet集合中识别类型为生命周期回调函数的元素,这些元素再添加上onActiveStart,onActiveEnd以及onTerminal三个辅助节点构成被实现的生命周期回调函数节点(lifeNodes),以ELG中所有节点为全集,求lifeNodes的补集得到未被实现...
【专利技术属性】
技术研发人员:许静,过辰楷,刘奥,朱静雯,康介恢,
申请(专利权)人:南开大学,
类型:发明
国别省市:天津,12
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。