CN106598866A - 一种基于smali中间语言的静态检测系统及方法 - Google Patents

一种基于smali中间语言的静态检测系统及方法 Download PDF

Info

Publication number
CN106598866A
CN106598866A CN201611198355.1A CN201611198355A CN106598866A CN 106598866 A CN106598866 A CN 106598866A CN 201611198355 A CN201611198355 A CN 201611198355A CN 106598866 A CN106598866 A CN 106598866A
Authority
CN
China
Prior art keywords
rule
smali
behavior
sensitive
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201611198355.1A
Other languages
English (en)
Inventor
王鑫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Net (Hefei) Technology Co., Ltd.
Original Assignee
Hefei Guoxin Vehicle Networking Research Institute Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hefei Guoxin Vehicle Networking Research Institute Co Ltd filed Critical Hefei Guoxin Vehicle Networking Research Institute Co Ltd
Priority to CN201611198355.1A priority Critical patent/CN106598866A/zh
Publication of CN106598866A publication Critical patent/CN106598866A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供了一种基于smali中间语言的静态检测系统及方法,其中所述预处理模块用于对移动应用软件做简单快速的初步筛选分析,判断当前移动应用软件是否存在可能的敏感行为,并判断是否需要进行后续静态行为分析程序;所述规则库模块为所述预处理模块在进行敏感行为分析时依赖的规则;所述敏感行为检测模块是对所述预处理模块判断出的存在敏感行为的移动应用软件进行详细的行为检测;所述结果生成模块用于将移动应用软件的基本信息和敏感信息生成报告并输出。本发明提供的基于smali的检测系统能够在完整的保留Android应用软件中的信息再进行行为分析,将应用软件中存在的敏感行为准确的检测出来。

Description

一种基于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文件格式获取字符串偏移地址后,第一个字节即为当前字符串的大小,当前字符串长度大于预设阈值时,表明该字符串为无意义字符,将该字符串从常量池中剔除;
在获取了整个应用软件的常量池后,需要进行常量对比,对比的对象为一类规则和常量池中的数据,如果两者有重合的则表明当前应用软件中可能存在敏感行为需要进行进一步的行为检测,若没有则表明当前软件中不含有敏感行为。
较佳地,所述敏感行为检测模块通过三类规则在控制流和数据流中进行回溯比对确定敏感行为:首先是一类规则的触发行为,其次在数据流中对二类规则中的参数进行比对触发,最后进行三类规则的行为定性,若连续触发一类、二类规则同时三类规则定性为非用户行为即为后台行为则是敏感行为;
具体执行行为检测的步骤为:首先利用apktool将待检测移动应用软件反编译为smali文件,apktool的中间模块中baksmali部分会将smali文件生成为smali语法树,依据此语法树相关结构,进行信息抽取,获取控制流和数据流变化数据,与维护的规则库进行匹配检测,进行控制流与数据流分析,获取敏感行为出现的位置与参数信息;
所述smali语法树是通过分析smali文件的语法、词法,将smali文件按照语法结构生成为树状结构,根据smali本身的语法树结构体系,可以将语句之间的跳转关系,寄存器间的数据变化信息抽取出来形成新的控制流图、数据流图,以及根据smali中invoke指令的相关信息获取函数依赖图,根据上述三种图,进行流追踪。
较佳地,所述结果生成模块最终得到的结果报告包括基本信息、权限声明、明文字符串以及存在的敏感行为;
若信息中含有明文存储的网址、电话号码信息表明该移动应用软件没有隐藏程序资源使用信息,则这些信息容易泄露,被攻击者盗用、篡改,生成盗版或钓鱼应用软件。
本发明还提供了一种基于smali中间语言的静态检测方法,其包括以下步骤:
S1:首先使用apktool将Android应用软件反编译为smali文件,然后使用baksmali将smali文件生成为smali语法树,smali语法树作为流分析的输入;
S2:以smali语法树为基础,进行控制流和数据流分析;控制流通过语句间的跳转分支和执行顺序构成控制依赖图,同时根据invoke指令来生成函数依赖图;
S3:在smali语言中,数据流的变化为语句间的寄存器数值变化,对语句间寄存器的变化进行记录,对每个敏感语句节点寄存器中的数据进行定值计算,最后形成当前语句节点的定值集合;
S4:对规则库中的安全规则进行解析。1类规则定义了敏感行为API、命名空间和类名等关键信息,2类规则定义了参数满足的信息和格式,3类规则定义了用户行为;
S5:进行敏感行为检测,根据规则库中的规则进行敏感行为分析,确定移动应用软件中存在的敏感行为;
S6:生成报告:将应用软件的基本信息和存在的敏感行为生成报告,方便阅读和后续分析。
本发明具有以下有益效果:
检测的准确率上升:
本发明提供的基于smali的检测系统能够在完整的保留Android应用软件中的信息再进行行为分析,将应用软件中存在的敏感行为准确的检测出来;在正常样本和恶意样本中准确率较高的同时误报率都有一定的降低,存在敏感行为而未检测出的数量会明显下降,表明之前因为信息缺失而无法检测出的敏感行为在基于中间语言smali的静态检测系统中可以被成功检测出;并且通过本发明提供的基于smali的检测系统平均检测时间大大减少,具有更高的检测效率。
当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的基于smali中间语言的静态检测系统示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种基于smali中间语言的静态检测系统,其包括预处理模块3、规则库模块2、敏感行为检测模块4、结果生成模块5,所述预处理模块用于对移动应用软件1做简单快速的初步筛选分析,判断当前移动应用软件1是否存在可能的敏感行为,并判断是否需要进行后续静态行为分析程序;
所述规则库模块2为所述预处理模块3在进行敏感行为分析时依赖的规则;
所述敏感行为检测模块4是对所述预处理模块3判断出的存在敏感行为的移动应用软件进行详细的行为检测;所述结果生成模块5用于将移动应用软件的基本信息和敏感信息生成报告并输出。
本实施例提供的所述规则库模块包括一类规则:敏感行为API、二类规则:参数规则以及三类规则:用户行为规则,所述参数规则为确定所述敏感行为API的参数是否为符合条件的类型,所述用户行为规则用于确定命中的符合条件的敏感行为API是后台行为还是用户行为。
本系统的规则库分为三类:第一类为敏感行为API,比如一个实现发送短信这个行为的API是sendTextMessage,那么sendTextMessage作为一个敏感行为一类规则的API部分写入规则文件,同时sendTextMessage的命名空间android.telephony.gsm及类名SmsManager可以确定唯一的当前发送短信的规则,因此可以确定一类规则的规则样式。第二类为参数规则,为了确定命中的一类规则的参数是否为符合条件的类型,比如sendTextMessage的参数如果为电话号码这种类型,则其敏感性较强。第三类为用户行为规则,为了确定命中的符合条件的敏感行为是后台行为还是用户行为,即若是追踪到最上层的系统函数,发现是用户行为则表示此敏感行为为用户已知行为,则将此触发行为不放入敏感行为结果库中,因为这是一个用户已知行为并不是后台行为。
规则库的三类规则有各自的规则格式,根据规则ID唯一确定规则,不同的规则拥有不同的格式及不同的功能,三类规则集合构成本系统维护的规则库。三类规则与前两类规则不同,三类规则不是定义敏感行为,而是判断当前敏感行为是否为用户已知或用户授权,进而进行剔除。
其中所述预处理模块3用于实现快速从资源文件和dex文件中获取当前应用软件中所有使用的字符串,即获取常量池中的数据;
对于从资源文件的分解,可以使用SAXBuilder对xml文件进行解析,按照格式获取AndroidManifest.xml中的信息;从dex文件中获取常量表则通过文件格式,进行编码对dex文件中的字符串列表进行提取,在通过dex文件格式获取字符串偏移地址后,第一个字节即为当前字符串的大小,当前字符串长度大于预设阈值时,表明该字符串为无意义字符,将该字符串从常量池中剔除;
在获取了整个应用软件的常量池后,需要进行常量对比,对比的对象为一类规则和常量池中的数据,如果两者有重合的则表明当前应用软件中可能存在敏感行为需要进行进一步的行为检测,若没有则表明当前软件中不含有敏感行为。
所述敏感行为检测模块4敏感行为检测主要是与三类规则在控制流和数据流中进行回溯比对。首先是一类规则的触发行为,其次在数据流中对二类规则中的参数进行比对触发,最后进行三类规则的行为定性,若连续触发一类、二类规则同时三类规则定性为非用户行为即为后台行为则是敏感行为。
敏感行为检测的主要目标是对检测到的可能的敏感行为进行参数检测、用户行为检测以确定最终的敏感行为结果。
行为检测的具体过称为:首先利用apktool将待检测移动应用软件反编译为smali文件,apktool的中间模块中baksmali部分会将smali文件生成为smali语法树,依据此语法树相关结构,进行信息抽取,获取控制流和数据流变化数据,与维护的规则库进行匹配检测,进行控制流与数据流分析,获取敏感行为出现的位置与参数信息;
所述smali语法树是通过分析smali文件的语法、词法,将smali文件按照语法结构生成为树状结构,根据smali本身的语法树结构体系,可以将语句之间的跳转关系,寄存器间的数据变化信息抽取出来形成新的控制流图、数据流图,以及根据smali中invoke指令的相关信息获取函数依赖图,根据上述三种图,进行流追踪。
本系统根据smali的语法规则,对获取的smali文件进行语法树构造,按照语法树的结构和smali相关语法规则,可以获取控制流、函数依赖图和数据流等信息。首先获取类的相关信息。其次是获取所有的方法信息,FunctionData存储的是所有的方法信息。本系统对方法的存储结构所示(省略了部分信息),其中MethodData为方法名称、输入参数类型与返回值类型信息,这些信息能够标示一个方法。Method_Line存储的不仅仅是语句的行数,更重要的是存储了当前行信息,包括指令语句、寄存器信息等。RegisterMessage存储的是指令变化信息,记录指令所在行数,在进行定值分析时,追寻上一层参数的定值信息。
在MethodData中根据不同的指令,对该语句进行不同的处理。如invoke指令。该指令表示此处存在函数调用,与其他普通语句差别明显,该节点的子节点中存在I_METHOD_PROTOTYPE以及I_METHOD_RETURN_TYPE的节点,可以获取当前存在函数调用部分的具体调用细节。
首先是获取控制流图和控制依赖图。控制依赖主要用于模拟分支或跳转指令语句对程序行为的影响。控制依赖可以根据控制流图来进行严格的定义和构造。根据各语句间的控制依赖进行连接、跳转可以获取控制依赖图。通常控制依赖图包括几种必要的节点,包括表示程序中语句的语句节点如const v0“1”等;表示在一个区间内语句的控制依赖的区间节点;以及表示有地址或分支跳转条件语句,使用这些节点去构造控制依赖图。根据上文的语句分类,可以将控制流图提取为具体的流图。
对if类进行规整分析。if类的跳转为双向分支类,该类指令的双向跳转地址中1个为顺序执行的地址,1个为条件为真时的跳转地址。
对switch类进行规整分析。switch类的跳转为多向分支类,该类指令分为两类packed-switch与sparse-switch,区别在于packed-switch指定了比较值,而sparse-switch则是给出case比较对应的标号,再进行比较。两者在分析方法上无太大区别,因此以packed-switch为例进行讲解。
对顺序语句分析。顺序语句,顾名思义即无任何跳转分支流,按照语句的顺序进行指令,记录下语句中的所有信息,包括前一句指令的位置等即可。
其次是获取函数依赖图,即确定当前移动应用软件中的函数调用关系的图。该图的求解涉及到smali语言中一类表明当前语句中涉及到函数调用关系的指令即invoke指令。invoke指令的格式为invoke v meth@BBBB,根据其格式可以确定当前被调用函数的命名空间、类名及返回类型,这些信息可以唯一确定一个被调用的函数,作为此被调用函数的父函数可能作为另一个函数的子调用函数,将这些信息收集即可成为函数依赖图,从此图可以获取函数调用关系。
最后是对数据流进行获取分析。本系统中涉及到数据流分析变化的是在进行1类规则比对命中同时1类规则中参数比对项为真时才会存在数据流分析。进行数据流分析时,首先得到要分析的寄存器,然后对寄存器的变化进行分析。首先是获取与当前待分析的寄存器相关的前置寄存器所在语句的指令,从而根据指令变化追溯数据流的变化。
所述结果生成模块5最终得到的结果报告包括基本信息、权限声明、明文字符串以及存在的敏感行为;
若信息中含有明文存储的网址、电话号码信息表明该移动应用软件没有隐藏程序资源使用信息,则这些信息容易泄露,被攻击者盗用、篡改,生成盗版或钓鱼应用软件。
本发明还提供了一种基于smali中间语言的静态检测方法,其包括以下步骤:
S1:首先使用apktool将Android应用软件反编译为smali文件,然后使用baksmali将smali文件生成为smali语法树,smali语法树作为流分析的输入;
S2:以smali语法树为基础,进行控制流和数据流分析;控制流通过语句间的跳转分支和执行顺序构成控制依赖图,同时根据invoke指令来生成函数依赖图;
S3:在smali语言中,数据流的变化为语句间的寄存器数值变化,对语句间寄存器的变化进行记录,对每个敏感语句节点寄存器中的数据进行定值计算,最后形成当前语句节点的定值集合;
S4:对规则库中的安全规则进行解析。1类规则定义了敏感行为API、命名空间和类名等关键信息,2类规则定义了参数满足的信息和格式,3类规则定义了用户行为;
S5:进行敏感行为检测,根据规则库中的规则进行敏感行为分析,确定移动应用软件中存在的敏感行为;
S6:生成报告:将应用软件的基本信息和存在的敏感行为生成报告,方便阅读和后续分析。
本发明提供的基于smali的检测系统在检测的准确率得到显著提升:
本发明提供的基于smali的检测系统能够在完整的保留Android应用软件中的信息再进行行为分析,将应用软件中存在的敏感行为准确的检测出来;在正常样本和恶意样本中准确率较高的同时误报率都有一定的降低,存在敏感行为而未检测出的数量会明显下降,表明之前因为信息缺失而无法检测出的敏感行为在基于中间语言smali的静态检测系统中可以被成功检测出;
检测时间下降:
我们选取了300个样本作为评测目标,其中最大的样本为50.4M,最小的样本为154K,平均样本大小为2.56M。经过测试,传统方式中,基于源代码的检测系统是最快的,其最长的样本检测时间为17.2min,最短的样本检测时间为1.07min,平均检测时间为6.67min;而基于中间语言smali的检测系统中最长的样本检测时间为6.55min,最短的样本检测时间为0.28min,平均检测时间为1.16min。
以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。

Claims (6)

1.一种基于smali中间语言的静态检测系统,其特征在于,包括预处理模块、规则库模块、敏感行为检测模块、结果生成模块,所述预处理模块用于对移动应用软件做简单快速的初步筛选分析,判断当前移动应用软件是否存在可能的敏感行为,并判断是否需要进行后续静态行为分析程序;
所述规则库模块为所述预处理模块在进行敏感行为分析时依赖的规则;
所述敏感行为检测模块是对所述预处理模块判断出的存在敏感行为的移动应用软件进行详细的行为检测;所述结果生成模块用于将移动应用软件的基本信息和敏感信息生成报告并输出。
2.如权利要求1所述的基于smali中间语言的静态检测系统,其特征在于,所述规则库模块包括一类规则:敏感行为API、二类规则:参数规则以及三类规则:用户行为规则,所述参数规则为确定所述敏感行为API的参数是否为符合条件的类型,所述用户行为规则用于确定命中的符合条件的敏感行为API是后台行为还是用户行为。
3.如权利要求2所述的基于smali中间语言的静态检测系统,其特征在于,所述预处理模块用于实现快速从资源文件和dex文件中获取当前应用软件中所有使用的字符串,即获取常量池中的数据;
对于从资源文件的分解,可以使用SAXBuilder对xml文件进行解析,按照格式获取AndroidManifest.xml中的信息;从dex文件中获取常量表则通过文件格式,进行编码对dex文件中的字符串列表进行提取,在通过dex文件格式获取字符串偏移地址后,第一个字节即为当前字符串的大小,当前字符串长度大于预设阈值时,表明该字符串为无意义字符,将该字符串从常量池中剔除;
在获取了整个应用软件的常量池后,需要进行常量对比,对比的对象为一类规则和常量池中的数据,如果两者有重合的则表明当前应用软件中可能存在敏感行为需要进行进一步的行为检测,若没有则表明当前软件中不含有敏感行为。
4.如权利要求3所述的基于smali中间语言的静态检测系统,其特征在于,所述敏感行为检测模块通过三类规则在控制流和数据流中进行回溯比对确定敏感行为:首先是一类规则的触发行为,其次在数据流中对二类规则中的参数进行比对触发,最后进行三类规则的行为定性,若连续触发一类、二类规则同时三类规则定性为非用户行为即为后台行为则是敏感行为;
具体执行行为检测的步骤为:首先利用apktool将待检测移动应用软件反编译为smali文件,apktool的中间模块中baksmali部分会将smali文件生成为smali语法树,依据此语法树相关结构,进行信息抽取,获取控制流和数据流变化数据,与维护的规则库进行匹配检测,进行控制流与数据流分析,获取敏感行为出现的位置与参数信息;
所述smali语法树是通过分析smali文件的语法、词法,将smali文件按照语法结构生成为树状结构,根据smali本身的语法树结构体系,可以将语句之间的跳转关系,寄存器间的数据变化信息抽取出来形成新的控制流图、数据流图,以及根据smali中invoke指令的相关信息获取函数依赖图,根据上述三种图,进行流追踪。
5.如权利要求1所述的基于smali中间语言的静态检测系统,其特征在于,所述结果生成模块最终得到的结果报告包括基本信息、权限声明、明文字符串以及存在的敏感行为;
若信息中含有明文存储的网址、电话号码信息表明该移动应用软件没有隐藏程序资源使用信息,则这些信息容易泄露,被攻击者盗用、篡改,生成盗版或钓鱼应用软件。
6.一种基于smali中间语言的静态检测方法,其特征在于,包括以下步骤:
S1:首先使用apktool将Android应用软件反编译为smali文件,然后使用baksmali将smali文件生成为smali语法树,smali语法树作为流分析的输入;
S2:以smali语法树为基础,进行控制流和数据流分析;控制流通过语句间的跳转分支和执行顺序构成控制依赖图,同时根据invoke指令来生成函数依赖图;
S3:在smali语言中,数据流的变化为语句间的寄存器数值变化,对语句间寄存器的变化进行记录,对每个敏感语句节点寄存器中的数据进行定值计算,最后形成当前语句节点的定值集合;
S4:对规则库中的安全规则进行解析。1类规则定义了敏感行为API、命名空间和类名等关键信息,2类规则定义了参数满足的信息和格式,3类规则定义了用户行为;
S5:进行敏感行为检测,根据规则库中的规则进行敏感行为分析,确定移动应用软件中存在的敏感行为;
S6:生成报告:将应用软件的基本信息和存在的敏感行为生成报告,方便阅读和后续分析。
CN201611198355.1A 2016-12-22 2016-12-22 一种基于smali中间语言的静态检测系统及方法 Pending CN106598866A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611198355.1A CN106598866A (zh) 2016-12-22 2016-12-22 一种基于smali中间语言的静态检测系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611198355.1A CN106598866A (zh) 2016-12-22 2016-12-22 一种基于smali中间语言的静态检测系统及方法

Publications (1)

Publication Number Publication Date
CN106598866A true CN106598866A (zh) 2017-04-26

Family

ID=58602623

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611198355.1A Pending CN106598866A (zh) 2016-12-22 2016-12-22 一种基于smali中间语言的静态检测系统及方法

Country Status (1)

Country Link
CN (1) CN106598866A (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107562429A (zh) * 2017-08-25 2018-01-09 中国科学院软件研究所 一种基于编译规则的Android系统静态划分方法
CN108959920A (zh) * 2017-05-26 2018-12-07 阿里巴巴集团控股有限公司 一种应用程序风险操作识别方法及装置
CN109492391A (zh) * 2018-11-05 2019-03-19 腾讯科技(深圳)有限公司 一种应用程序的防御方法、装置和可读介质
CN110610088A (zh) * 2019-09-12 2019-12-24 北京升鑫网络科技有限公司 一种基于php的webshell检测方法
CN111488569A (zh) * 2020-04-09 2020-08-04 支付宝(杭州)信息技术有限公司 一种权限确定、管理方法、装置、设备及介质
CN112380122A (zh) * 2020-11-13 2021-02-19 Xc5香港有限公司 通用资源静态检测方法、装置、计算机设备及存储介质
CN112612479A (zh) * 2020-12-28 2021-04-06 厦门市美亚柏科信息股份有限公司 一种基于安卓设备的apk静态分析方法和设备
CN114595482A (zh) * 2022-03-10 2022-06-07 北京邮电大学 一种基于静态检测的软件源代码隐私检测方法及系统
CN114780952A (zh) * 2022-03-09 2022-07-22 浙江吉利控股集团有限公司 敏感应用调用场景的检测方法、系统及存储介质
CN116305247A (zh) * 2023-02-02 2023-06-23 广东为辰信息科技有限公司 一种车载应用软件过程数据的敏感信息检测方法及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1444742A (zh) * 2000-05-28 2003-09-24 梅耶·亚隆 针对不良程序窃取信息和破坏行为的通用综合性计算机安全防护系统与方法
CN101266550A (zh) * 2007-12-21 2008-09-17 北京大学 一种恶意代码检测方法
CN102768638A (zh) * 2012-05-18 2012-11-07 北京工业大学 基于状态转移图的软件行为可信性检测方法
CN102938040A (zh) * 2012-09-29 2013-02-20 中兴通讯股份有限公司 Android恶意应用程序检测方法、系统及设备
CN103368904A (zh) * 2012-03-27 2013-10-23 百度在线网络技术(北京)有限公司 移动终端、可疑行为检测及判定系统和方法
CN103793650A (zh) * 2013-12-02 2014-05-14 北京邮电大学 Android应用程序的静态分析方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1444742A (zh) * 2000-05-28 2003-09-24 梅耶·亚隆 针对不良程序窃取信息和破坏行为的通用综合性计算机安全防护系统与方法
CN101266550A (zh) * 2007-12-21 2008-09-17 北京大学 一种恶意代码检测方法
CN103368904A (zh) * 2012-03-27 2013-10-23 百度在线网络技术(北京)有限公司 移动终端、可疑行为检测及判定系统和方法
CN102768638A (zh) * 2012-05-18 2012-11-07 北京工业大学 基于状态转移图的软件行为可信性检测方法
CN102938040A (zh) * 2012-09-29 2013-02-20 中兴通讯股份有限公司 Android恶意应用程序检测方法、系统及设备
CN103793650A (zh) * 2013-12-02 2014-05-14 北京邮电大学 Android应用程序的静态分析方法及装置

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108959920A (zh) * 2017-05-26 2018-12-07 阿里巴巴集团控股有限公司 一种应用程序风险操作识别方法及装置
CN107562429A (zh) * 2017-08-25 2018-01-09 中国科学院软件研究所 一种基于编译规则的Android系统静态划分方法
CN107562429B (zh) * 2017-08-25 2021-04-20 中国科学院软件研究所 一种基于编译规则的Android系统静态划分方法
CN109492391B (zh) * 2018-11-05 2023-02-28 腾讯科技(深圳)有限公司 一种应用程序的防御方法、装置和可读介质
CN109492391A (zh) * 2018-11-05 2019-03-19 腾讯科技(深圳)有限公司 一种应用程序的防御方法、装置和可读介质
CN110610088A (zh) * 2019-09-12 2019-12-24 北京升鑫网络科技有限公司 一种基于php的webshell检测方法
CN111488569A (zh) * 2020-04-09 2020-08-04 支付宝(杭州)信息技术有限公司 一种权限确定、管理方法、装置、设备及介质
CN112380122A (zh) * 2020-11-13 2021-02-19 Xc5香港有限公司 通用资源静态检测方法、装置、计算机设备及存储介质
CN112612479A (zh) * 2020-12-28 2021-04-06 厦门市美亚柏科信息股份有限公司 一种基于安卓设备的apk静态分析方法和设备
CN114780952A (zh) * 2022-03-09 2022-07-22 浙江吉利控股集团有限公司 敏感应用调用场景的检测方法、系统及存储介质
CN114595482A (zh) * 2022-03-10 2022-06-07 北京邮电大学 一种基于静态检测的软件源代码隐私检测方法及系统
CN114595482B (zh) * 2022-03-10 2024-06-11 北京邮电大学 一种基于静态检测的软件源代码隐私检测方法及系统
CN116305247A (zh) * 2023-02-02 2023-06-23 广东为辰信息科技有限公司 一种车载应用软件过程数据的敏感信息检测方法及系统
CN116305247B (zh) * 2023-02-02 2024-05-10 广东为辰信息科技有限公司 一种车载应用软件过程数据的敏感信息检测方法及系统

Similar Documents

Publication Publication Date Title
CN106598866A (zh) 一种基于smali中间语言的静态检测系统及方法
CN106161381B (zh) 用于去混淆脚本化语言的设备和方法以及计算机可读介质
CN106203113B (zh) 安卓应用文件的隐私泄露监控方法
US7069589B2 (en) Detection of a class of viral code
CN104517054B (zh) 一种检测恶意apk的方法、装置、客户端和服务器
Liu et al. Cyber vulnerability intelligence for internet of things binary
KR100503387B1 (ko) 악성 암호화 스크립트에 대한 분석 및 해독 방법
CN107659570A (zh) 基于机器学习与动静态分析的Webshell检测方法及系统
CN111523117A (zh) 一种安卓恶意软件检测和恶意代码定位系统及方法
CN105956180B (zh) 一种敏感词过滤方法
CN100483434C (zh) 病毒识别方法及装置
CN101751530B (zh) 检测漏洞攻击行为的方法及设备
CN105022958B (zh) 一种安卓应用中基于代码库安全规约的应用程序漏洞检测分析方法
US8572747B2 (en) Policy-driven detection and verification of methods such as sanitizers and validators
CN107798242A (zh) 一种静动态结合的恶意安卓应用自动检测系统
CN105653946A (zh) 基于组合事件行为触发的Android恶意行为检测系统及其检测方法
CN107133518A (zh) 基于参数和信息流的源代码越权检测方法及装置
CN107103239A (zh) 基于应用系统业务处理逻辑的源代码越权检测方法及装置
CN108875375A (zh) 一种面向安卓系统隐私泄漏检测的动态特性信息提取方法
CN107368741A (zh) 一种基于静态分析的Android应用JavaScript安全漏洞检测方法
CN111638883B (zh) 基于决策树的决策引擎实现方法
CN110210216A (zh) 一种病毒检测的方法以及相关装置
CN106293118B (zh) 输入字符检测的方法和装置
Ohm et al. Sok: Practical detection of software supply chain attacks
KR20110129020A (ko) 코드 분석기법을 이용한 악성코드 차단 시스템 및 방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20170818

Address after: 230000 Anhui city of Hefei Province Economic and Technological Development Zone Cuiwei Road No. 6 Haiheng building room 568

Applicant after: Net (Hefei) Technology Co., Ltd.

Address before: Shushan District of Hefei City, Anhui province 230000 North Road Feibin farmers market 1 buildings 202-203

Applicant before: Hefei Guoxin vehicle Networking Research Institute Co., Ltd.

TA01 Transfer of patent application right
RJ01 Rejection of invention patent application after publication

Application publication date: 20170426

RJ01 Rejection of invention patent application after publication