[发明专利]一种基于smali中间语言的静态检测系统及方法在审
申请号: | 201611198355.1 | 申请日: | 2016-12-22 |
公开(公告)号: | CN106598866A | 公开(公告)日: | 2017-04-26 |
发明(设计)人: | 王鑫 | 申请(专利权)人: | 合肥国信车联网研究院有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京和信华成知识产权代理事务所(普通合伙)11390 | 代理人: | 胡剑辉 |
地址: | 230000 安徽省合肥市蜀山*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 smali 中间 语言 静态 检测 系统 方法 | ||
技术领域
本发明涉及到移动应用软件的分析技术领域,特别是一种基于smali中间语言的静态检测系统及方法。
背景技术
一般情况下,移动应用软件静态分析技术是反编译到源代码,因为Android代码本身的问题,并不能完全匹配Java语法并且在反编译到源代码的过程中会有信息缺失或反编译失败,无法进行完整的信息分析,因此设计并实现了一种基于smali中间语言的静态检测系统,对比基于源代码的静态检测系统有较好的检测精确度和较低的误报率,并在检测效率上有极大的提高。
目前,国内外对应用软件的静态检测技术做了大量的研究,对Android应用软件的静态检测技术主要分为基于特征的检测技术和基于行为的检测技术两大类,基于特征的检测技术是根据由已知类别的恶意软件类别中提取的通用特征码进行检测;而基于行为的检测方法则是将应用软件反编译到源代码或中间代码。
基于特征代码的检测技术,是将恶意软件中的代码或自身信息等进行提取处理为特征码,再通过检测文件中是否存在特征码来判断其是否为恶意软件。这种检测技术是现状病毒检测最常用及核心的技术之一。Thomas等人将Android应用程序反编译到源代码,再对源代码中的模型特征进行匹配检测。吴俊昌等人将Android移动应用使用的权限作为特征,进而设计了一种基于权限特征的静态检测方法。Desnos等人从应用程序中提取方法特征再进行距离压缩和相似度比较来对应用软件的相似度和恶意软件进行检测。童正飞将从动态链接表中提出的Android程序调用关系作为特征,对恶意软件进行分类检测。然而基于特征的检测技术只能通过特征代码进行检测,无法对未知病毒或已知病毒的变种进行检测。
基于敏感行为的检测技术依靠监视程序的行为,与已知的恶意行为模式进行匹配,来判断目标文件是否具备恶意趋向。这种检测技术一般通过逆向手段,分析应用软件中的函数调用序列等,即一般会将应用软件进行反编译,得到中间文件代码或者源代码,针对得到的文件提取控制流和数据流,根据命中的敏感API进行流追踪,判断是否为后台行为以及参数是否为敏感数据。
然而由于Android应用软件的特殊性,其在反编译到源代码的过程中有部分信息丢失,从而无法完全匹配Java语言的语法规则,进行中间抽象模型构建时也无法构造出完整准确的抽象语法树。由于检验所针对的检查对象不是程序本身而是构建出的的模型,程序在向模型转化的过程中有稍微一点点偏差以至于获得的模型具有偏差,都会造成最终的检查结果与程序中实际存在的敏感行为存在误差。
发明内容
为解决上述技术问题,本发明提供了一种基于smali中间语言的静态检测系统,其包括预处理模块、规则库模块、敏感行为检测模块、结果生成模块,所述预处理模块用于对移动应用软件做简单快速的初步筛选分析,判断当前移动应用软件是否存在可能的敏感行为,并判断是否需要进行后续静态行为分析程序;
所述规则库模块为所述预处理模块在进行敏感行为分析时依赖的规则;
所述敏感行为检测模块是对所述预处理模块判断出的存在敏感行为的移动应用软件进行详细的行为检测;所述结果生成模块用于将移动应用软件的基本信息和敏感信息生成报告并输出。
较佳地,所述规则库模块包括一类规则:敏感行为API、二类规则:参数规则以及三类规则:用户行为规则,所述参数规则为确定所述敏感行为API的参数是否为符合条件的类型,所述用户行为规则用于确定命中的符合条件的敏感行为API是后台行为还是用户行为。
较佳地,所述预处理模块用于实现快速从资源文件和dex文件中获取当前应用软件中所有使用的字符串,即获取常量池中的数据;
对于从资源文件的分解,可以使用SAXBuilder对xml文件进行解析,按照格式获取AndroidManifest.xml中的信息;从dex文件中获取常量表则通过文件格式,进行编码对dex文件中的字符串列表进行提取,在通过dex文件格式获取字符串偏移地址后,第一个字节即为当前字符串的大小,当前字符串长度大于预设阈值时,表明该字符串为无意义字符,将该字符串从常量池中剔除;
在获取了整个应用软件的常量池后,需要进行常量对比,对比的对象为一类规则和常量池中的数据,如果两者有重合的则表明当前应用软件中可能存在敏感行为需要进行进一步的行为检测,若没有则表明当前软件中不含有敏感行为。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于合肥国信车联网研究院有限公司,未经合肥国信车联网研究院有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611198355.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种软件测试方法及装置
- 下一篇:用户界面的测试方法及测试装置