[发明专利]JAVA编译结果文件的识别方法及识别装置在审
申请号: | 201310047203.1 | 申请日: | 2013-02-05 |
公开(公告)号: | CN103970523A | 公开(公告)日: | 2014-08-06 |
发明(设计)人: | 陈晓洪;庄仁峰;孔轶;黄伟湘;郑浩彬;吕汉鑫;谭俊;雷志勇;魏来;李友国 | 申请(专利权)人: | 中国移动通信集团广东有限公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 北京银龙知识产权代理有限公司 11243 | 代理人: | 许静;黄灿 |
地址: | 510623 广东省广州市珠*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | java 编译 结果 文件 识别 方法 装置 | ||
技术领域
本发明涉及通信领域,尤其涉及一种JAVA编译结果文件的识别方法及识别装置。
背景技术
随着Android手机的发展,java程序的应用越来越多,java语言类恶意软件也越来越多。由于java通过不同的混淆器得出的java文件编译结果不同,给追查java类的手机恶意软件带来很大的困难。目前主要通过MD5识别法和常量串识别法来进行识别。MD5识别法是通过先识别样本的MD5,然后在下次扫描时计算新的安装包的MD5,将其与样本的MD5进行匹配,如果匹配就识别为样本安装包,如果不匹配表示非样本安装包。常量串识别法是利用java程序中的常量串在混淆的过程中不会被修改,通过常量串来识别同一个程序的不同混淆结果。
但是以上两种放放都存在很大的局限性。对于MD5识别法,不同JAVA文件的MD5值彼此不同,不能相互匹配,导致该方法的识别率非常低。对于常量串识别法,由于java程序中不具有常量串或者其常量串并不能与其他java程序的区分开,也即是其他java程序使用同样的常量串,导致该方法便有很高的误判率。
发明内容
本发明提出一种JAVA编译结果文件的识别方法及装置,以解决现有技术中存在的识别率低和误判率高的技术问题。
本发明的实施例提供一种JAVA编译结果文件的识别方法,包括:构建标本JAVA文件的标本结构特征树;按照标本结构特征树的构建方式构建待识别JAVA文件的待识别结构特征树;比较待识别结构特征树与标本结构特征树;当结构特征与标本结构特征树相匹配时,确定待识别JAVA文件与标本JAVA文件相同。
其中,构建标本JAVA文件的结构特征树的步骤包括:确定JAVA文件的安装包标本;根据安装包中的核心文件得到标本JAVA文件的JAVA子文件;建立JAVA子文件的标本结构特征子树。标本结构特征子树包括常量节点和变量节点;常量节点包括常量的类型、值和可见范围标记;变量节点包括变量的类型和可见范围标记。可见范围标记为安装包可见标记、JAVA子文件可见标记、类可见标记和函数可见标记中的一种或多种。
标本结构特征子树还包括类子树;类子树的节点包括类常量节点和类变量节点,类常量节点包括常量的类型、值和类可见标记,类变量节点包括变量的类型和类可见标记。
变量的节点包括函数变量的输出类型、输入类型和JAVA文件可见标记。标本结构特征子树还包括函数子树;函数子树的节点包括函数常量节点和函数变量节点;函数常量节点包括常量的类型、值和函数范围可见标记,或者包括常量的类型、值和函数块可见标记;函数变量节点包括变量的类型和函数范围可见标记,或者包括变量的类型和函数块可见标记。函数子树的节点包括系统函数调用节点,系统函数调用节点包括系统函数名称和系统函数在函数中的调用次数。
本发明的实施例还提供一种JAVA编译结果文件的识别装置,包括:构建单元,用于构建标本JAVA文件的标本结构特征树,和按照标本结构特征树的构建方式构建待识别JAVA文件的待识别结构特征树;比较单元,用于比较待识别结构特征树与标本结构特征树,当结构特征与标本结构特征树相匹配时,确定待识别JAVA文件与标本JAVA文件相同。
构建单元包括:确定模块,用于确定JAVA文件的安装包标本;汇编模块,根据安装包中的类文件得到标本JAVA文件的JAVA子文件;构建模块,建立JAVA子文件的标本结构特征子树。标本结构特征子树包括常量节点和变量节点;常量节点包括常量的类型、值和可见范围标记;变量节点包括变量的类型和可见范围标记。可见范围标记为安装包可见标记、JAVA子文件可见标记、类可见标记和函数可见标记中的一种或多种。
标本结构特征子树还包括类子树;类子树的节点包括类常量节点和类变量节点,类常量节点包括常量的类型、值和类可见标记,类变量节点包括变量的类型和类可见标记。
变量的节点包括函数变量的输出类型、输入类型和JAVA文件可见标记。标本结构特征子树还包括函数子树;函数子树的节点包括函数常量节点和函数变量节点;函数常量节点包括常量的类型、值和函数范围可见标记,或者包括常量的类型、值和函数块可见标记;函数变量节点包括变量的类型和函数范围可见标记,或者包括变量的类型和函数块可见标记。函数子树的节点包括系统函数调用节点,系统函数调用节点包括系统函数名称和系统函数在函数中的调用次数。
本发明通过对java程序标本构建特征树,作为该java程序的唯一识别标准,提高java程序经过多混淆器混淆后识别的覆盖率和准确率。
附图说明
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国移动通信集团广东有限公司,未经中国移动通信集团广东有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310047203.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种磁悬浮飞轮储能装置冷却系统
- 下一篇:移动式防汛排涝抗旱泵车