一种多机制可扩展的组件通信解析方法及系统技术方案

技术编号:39060337 阅读:13 留言:0更新日期:2023-10-12 19:53
本发明专利技术涉及组件通信解析技术领域,公开了一种多机制可扩展的组件通信解析方法及系统,包括:输入待解析的APK文件,将APK文件反汇编为源代码和配置文件;解析所述源代码和配置文件中的组件得到已注册的组件信息;针对所述源代码,构建组件入口点函数,收集组件传递消息的API列表;基于ENRE

【技术实现步骤摘要】
一种多机制可扩展的组件通信解析方法及系统


[0001]本专利技术涉及组件通信解析
,特别涉及一种多机制可扩展的组件通信解析方法及系统。

技术介绍

[0002]随着智能手机的广泛普及,Android成为移动设备最主流的操作系统。组件是Android应用的基本组成部分,各个组件之间相互独立、易于测试和维护。Android包含活动、服务、广播接收器和内容管理者四大组件。Android提供多种机制用于组件间的消息传递,例如:Intent、Messenger和Binder等。然而,组件间通信可能通过意图欺骗和意图劫持被恶意利用,造成Android通信安全隐患。因此,解析组件通信机制和路径是Android开发和应用安全领域的重要环节。
[0003]Android组件通信解析目前仍然存在以下难点:
[0004]1)消息体属性解析不完全。消息体属性完全和正确解析对于目标组件的确认极为重要。但学术界现有组件通信解析工具均存在复杂情况下消息体属性解析不完全的问题。
[0005]2)在真实应用场景下运行成功率较低。现有大多数组件通信解析工具存在在特定数据集上表现良好,但在真实应用场景下,不能成功解析或解析时间过长的问题。
[0006]3)不支持解析多种通信机制。现有组件通信解析方法大多仅支持解析Intent,对于其余组件机制如Messenger、Binder等未成功解析。

技术实现思路

[0007]为了解决上述Android组件通信存在的难点,本专利技术旨在提供一种多机制可扩展的组件通信解析方法,本专利技术提高了组件通信源与目标抽取的准确性和时间效率。
[0008]为了实现上述目的,本专利技术采用以下技术方案予以实现:
[0009]本专利技术第一方面是提供一种多机制可扩展的组件通信解析方法,包括:
[0010]获取待解析的APK文件,将APK文件反汇编为源代码和配置文件;
[0011]解析所述源代码和配置文件中的组件得到已注册的组件信息;
[0012]针对所述源代码,构建组件入口点函数,收集组件传递消息的API列表;基于ENRE

JAVA生成的函数调用图,构建从入口点到API的调用路径,进而确定源组件;
[0013]解析源组件通信中Intent和Messenger,对Intent或Messenger属性API进行语义建模,根据语义建模分析得到Intent和Messenger对应的属性信息;
[0014]基于已注册的组件信息、源组件、Intent和Messenger对应的属性信息,解析目标组件,确认显式Intent、隐式Intent和Messenger的目标组件;
[0015]将源组件、目标组件的调用关系及对应消息体属性输出。
[0016]作为本专利技术进一步改进,所述获取待解析的APK文件之前还包括预处理步骤,其包括:
[0017]获取用户输入的命令行参数,解析命令行参数,判断命令行参数是否合法,若不合
法给出用户提示。
[0018]作为本专利技术进一步改进,所述将APK文件反汇编为源代码和配置文件,包括:
[0019]将APK文件反汇编为Java源代码和配置文件,配置文件中包含静态注册的组件信息,源代码中包含动态注册的组件信息,可静态注册的组件包括:活动、服务、广播接收器和内容管理者;动态注册的组件常为广播接收器,已动态注册和静态注册的组件信息构成一个组件list,包含组件的名称、注册方式、注册属性信息。
[0020]作为本专利技术进一步改进,所述解析配置文件中的组件得到已注册的组件信息,包括:
[0021]解析已动态注册和静态注册的组件信息,使用以下方法解析已注册的组件信息RCI:
[0022]RCI=AISR∪SISR∪BRISR∪CPISR∪BRIDR
[0023]其中,AISR是在AndroidManifest中静态注册的活动组件信息,SISR是在AndroidManifest中静态注册的服务组件信息,BRISR是在AndroidManifest中静态注册的广播接收器组件信息,CPISR是在AndroidManifest中静态注册的内容管理者组件信息;BRIDR是在代码中动态注册的广播接收器组件信息。
[0024]作为本专利技术进一步改进,所述针对所述源代码,基于已注册的组件信息构建组件入口点函数,收集组件传递消息的API列表;基于ENRE

JAVA生成的函数调用图,构建从入口点到API的调用路径,进而确定源组件;包括:
[0025]S301,遍历代码中所有函数,使用以下方法收集组件入口点函数EPF:
[0026]EPF=cLF∪CC∪CUCMI∪COFA
[0027]其中,CLF是安卓生命周期函数集合,CC是回调函数集合,CUCMI是用户自定义的回调监听接口,COFA是其他待补充函数集合;
[0028]S302,Intent发送消息和启动组件有固定的API列表,根据目标组件的类别为相应的Intent发送消息和启动组件相关API建立第一语义模型;
[0029]S303,Messenger在解析时首先确定在类中是否定义Messenger类型的成员变量,确定类中是否使用Messenger机制进行消息传递,再为Messenger发送消息和启动组件相关API建立第二语义模型;
[0030]S304,根据ENRE

JAVA生成的函数调用图,构建从入口点函数到对应语义模型建模的API的调用路径,收集源组件调用路径,确定所有可能的源组件。
[0031]作为本专利技术进一步改进,所述解析源组件通信中Intent和Messenger,对Intent或Messenger属性API进行语义建模,根据语义建模分析得到Intent和Messenger对应的属性信息;包括:
[0032]S401,解析Intent消息体,为Intent消息体的属性设置或初始化API建模;采用数据流中的过程内到达定义分析和过程间上下文敏感分析得到Intent对象的属性值;
[0033]S402,解析Messenger消息体,为Message的字段设置或初始化API建模,采用数据流中的过程内到达定义分析和过程间上下文敏感分析得到Message对象的字段值。
[0034]作为本专利技术进一步改进,所述基于已注册的组件信息、源组件、Intent和Messenger对应的属性信息,解析目标组件,确认显式Intent、隐式Intent和Messenger的目标组件;包括:
[0035]S501,解析显式Intent目标组件,显式Intent通过直接指定启动组件的名称实现,解析Intent初始化语句和显式Intent设置目标组件函数得到显式Intent的目标组件;
[0036]S502,解析隐式Intent目标组件,未直接指明目标组件的名称为隐式Intent,根据隐式Intent匹配原则,对代码中解析的属性和注册的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种多机制可扩展的组件通信解析方法,其特征在于,包括:获取待解析的APK文件,将APK文件反汇编为源代码和配置文件;解析所述源代码和配置文件中的组件得到已注册的组件信息;针对所述源代码,构建组件入口点函数,收集组件传递消息的API列表;基于ENRE

JAVA生成的函数调用图,构建从入口点到API的调用路径,进而确定源组件;解析源组件通信中Intent和Messenger,对Intent或Messenger属性API进行语义建模,根据语义建模分析得到Intent和Messenger对应的属性信息;基于已注册的组件信息、源组件、Intent和Messenger对应的属性信息,解析目标组件,确认显式Intent、隐式Intent和Messenger的目标组件;将源组件、目标组件的调用关系及对应消息体属性输出。2.根据权利要求1所述的多机制可扩展的组件通信解析方法,其特征在于,所述获取待解析的APK文件之前还包括预处理步骤,其包括:获取用户输入的命令行参数,解析命令行参数,判断命令行参数是否合法,若不合法给出用户提示。3.根据权利要求1所述的多机制可扩展的组件通信解析方法,其特征在于,所述将APK文件反汇编为源代码和配置文件,包括:将APK文件反汇编为Java源代码和配置文件,配置文件中包含静态注册的组件信息,源代码中包含动态注册的组件信息,可静态注册的组件包括:活动、服务、广播接收器和内容管理者;动态注册的组件为广播接收器,已动态注册和静态注册的组件信息构成一个组件list,包含组件的名称、注册方式、注册属性信息。4.根据权利要求1所述的多机制可扩展的组件通信解析方法,其特征在于,所述解析所述配置文件中的组件得到已注册的组件信息,包括:解析已动态注册和静态注册的组件信息,使用以下方法解析已注册的组件信息RCI:RCI=AISR∪SISR∪BRISR∪CPISR∪BRIDR其中,AISR是在AndroidManifest中静态注册的活动组件信息,SISR是在AndroidManifest中静态注册的服务组件信息,BRISR是在AndroidManifest中静态注册的广播接收器组件信息,CPISR是在AndroidManifest中静态注册的内容管理者组件信息;BRIDR是在代码中动态注册的广播接收器组件信息。5.根据权利要求1所述的多机制可扩展的组件通信解析方法,其特征在于,所述针对所述源代码,构建组件入口点函数,收集组件传递消息的API列表;基于ENRE

JAVA生成的函数调用图,构建从入口点到API的调用路径,进而确定源组件;包括:S301,遍历代码中所有函数,使用以下方法收集组件入口点函数EPF:EPF=CLF∪CC∪CUCMI∪COFA其中,CLF是安卓生命周期函数集合,CC是回调函数集合,CUCMI是用户自定义的回调监听接口,COFA是其他待补充函数集合;S302,Intent发送消息和启动组件有固定的API列表,根据目标组件的类别为相应的Intent发送消息和启动组件相关API建立第一语义模型;S303,Messenger在解析时首先确定在类中是否定义Messenger类型的成员变量,确定类中是否使用Messenger机制进行消息传递,再为Messenger发送消息和启动组件相关API

【专利技术属性】
技术研发人员:晋武侠侯怡杨子江
申请(专利权)人:交叉信息核心技术研究院西安有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1