一种海量APK源码特征提取及相似分析方法
摘要文本
本发明涉及软件检测技术领域,公开了一种海量APK源码特征提取及相似分析方法,首先输入两个APK文件,通过源码解析反编译方法提取到APK包的AndroidManifest文件、本地化语言配置文件,提取到SMALI或JAVA源代码;再通过包名索引、启动类索引、固定目录识别方式,识别APK核心源码目录、第三方包目录、系统资源目录,并生成源码树;再对核心源码目录中的文件进行分析,计算文件HASH,提取源码文件中字符串类声明特征表示作为加权特征;计算拟进行分析的两棵源码树结构的相似度情况,根据源码目录的类型对进行不同程度的相似度加权。本发明降低分析资源投入和时间消耗,提升源码相似分析的准确度,能够实现在大规模APK数据分析场景的高性能分析。
申请人信息
- 申请人:国家计算机网络与信息安全管理中心
- 申请人地址:100029 北京市朝阳区裕民路甲3号
- 发明人: 国家计算机网络与信息安全管理中心
专利详细信息
| 项目 | 内容 |
|---|---|
| 专利名称 | 一种海量APK源码特征提取及相似分析方法 |
| 专利类型 | 发明申请 |
| 申请号 | CN202311441226.0 |
| 申请日 | 2023/11/1 |
| 公告号 | CN117591119A |
| 公开日 | 2024/2/23 |
| IPC主分类号 | G06F8/41 |
| 权利人 | 国家计算机网络与信息安全管理中心 |
| 发明人 | 段东圣; 侯炜; 张露晨; 佟玲玲; 段运强; 秦韬; 李美燕; 任博雅; 鲁睿; 张林波; 孙旷怡; 陈新兴; 张绪川; 王鹏 |
| 地址 | 北京市朝阳区裕民路甲3号 |
专利主权项内容
1.一种海量APK源码特征提取及相似分析方法,其特征在于:具体按以下步骤执行:S : 首先输入两个APK文件,通过源码解析反编译方法提取到APK包的AndroidManifest文件、本地化语言配置文件,提取到SMALI或JAVA源代码;1S : 通过包名索引、启动类索引、固定目录识别方式,识别APK核心源码目录、第三方包目录、系统资源目录,并生成源码树;2S : 对核心源码目录中的文件进行分析,计算文件HASH,提取源码文件中字符串类声明特征表示作为加权特征;3S : 计算拟进行分析的两棵源码树结构的相似度情况,根据源码目录的类型对进行不同程度的相似度加权,其中核心源码目录相似的权重+2、第三方包目录+1、系统资源目录0;4S : 计算每棵树的末端节点源码文件,源码文件HASH一致的权重+2,源码文件特征表示相似的权重+1;5S : 计算两棵树的相似度情况,按照双向对比取平均数,生成源码树相似度,具体通过计算A树在B树中的覆盖率得出s1、计算B树在A树中的覆盖率得出s2,最后通过(s1+s2)/2计算输出目录结构相似度S,如式(1);6S : 通过SimHash算法分析的两个APP的AndroidManifest、本地化语言配置的相似程度,通过计算汉明距离输出相似度比例,输出相似性属性SC和SL;如式(2)-式(3);7S=similarity(simhash(Ca),simhash(Cb)) 式(2)CS=similarity(simhash(L),simhash(L)) 式(3)LabS:最后将树结构相似度、AndroidManifest相似度、本地化语言配置相似度三个数据,按照比例x∶y∶z加权求和计算输出相似度,x、y、z是树结构相似度、AndroidManifest相似度、本地化语言配置相似度三项相似度的权重系数,通过加权求和计算最终的APP相似度S;如式(4);8