一种恶意应用程序检测方法和装置的制造方法_2

文档序号:9866049阅读:来源:国知局
执行参数和结果变量。
[0039] 具体的,步骤S12可W按照W下步骤实施:
[0040] 步骤一、对应用程序进行逆向反编译,得到其对应的源码。
[0041] 具体实施时,对应用程序安装包(扩展名为.apk的文件)进行逆向反编译,得到 smali源码。
[0042] 步骤二、根据源码获取该应用程序包含的各API的参数变量。
[0043] 具体实施时,可W针对每一 API,分别在源码中、该API执行前和执行后插入标记 代码,所述标记代码包括API分类标记代码;记录每一 API的执行信息,根据该API的执行 信息和该API的标记代码,获取该API的类别和该API的参数变量。可W通过用于记录各 API的执行信息的日志,获取各API的参数变量,并输出记录各API的执行信息的日志。
[0044] 较佳的,利用获得的smali源码,可W采用W下方式输出应用程序中包含的各API 的执行参数或者结果变量;扫描smali源码中包含的所有API,针对每一 API,在该API执行 前和执行后插入标记代码,其中包括API分类标记代码;并将逆向的源码重打包后运行,输 出运行结果即为API的变量参数,具体实施时,可W使用输出日志的方式进行输出,如下所 示:
[0045] Uri uri = Uri. parse (AllFinalInfo. SMS_URI_INB0X);
[0046] SmsContent sc = new SmsContent (this, uri);
[0047] Log. V (tag, API名称+API分类标记+代码位置);
[0048] List<SmsInfo〉infos = sc. getSmsInfo 0 ;
[0049] body. setText (infos, get (position). getSmsbody ());
[0050] name. setText(infos, get(position). getName0);
[0051] log. V (tag, infos, get (position). getSmsbody 0);
[0052] log. V (tag, infos, get (position). getSmsbody 0);
[0053] Log. V (tag, API 名称);
[0054] W发送类API为例,其执行参数是指API发送的信息内容,而对于加密API来说, 其执行参数为待加密的原信息,而结果变量为加密后的加密信息。
[00巧]需要说明的是,步骤S11和步骤S12并无先后执行顺序,步骤S12也可W先于步骤 S11执行,两个步骤也可W同时执行。
[0056] S13、将获取的发送类API的执行参数与提取的所有用户信息或者获取的非发送 类API的结果变量进行匹配,根据匹配结果确定所述应用程序是否为恶意应用程序。
[0057] 较佳的,如图化所示,步骤S13中,可W按照W下步骤实施:
[0058] S131、针对应用程序包含的每一发送类API,判断提取的用户信息中是否存在与该 发送类API的执行参数匹配的用户信息,如果是,执行步骤S132,否则执行步骤S133。
[0059] 如图2所示,为将发送类API的执行参数与提取的用户信息进行匹配的示意图。W 发送类API1为例,按照为用户信息分配的信息标识的顺序,依次比较API1的执行参数与提 取的每一用户信息,如果其执行参数与当前比较的用户信息相同,则确定提取的用户信息 中存在与API1的执行参数匹配的用户信息。如果遍历所有的用户信息之后发现,API1的执 行参数与提取的每一用户信息均不相同,则确定提取的用户信息中不存在与APIl的执行 参数匹配的用户信息。假设API1的执行参数与信息标识为ID1的用户信息相同,则确定提 取的用户信息中存在与API1的执行参数匹配的用户信息,即信息标识为ID1的用户信息。
[0060] S132、确定该应用程序为恶意应用程序,流程结束。
[0061] S133、根据该发送类API的执行参数和该应用程序包含的非发送类API的结果变 量,从非发送类API中递归查找是否存在执行参数与提取的用户信息匹配的非发送类API, 如果是,执行步骤S132,否则,流程结束。
[0062] 需要说明的是,具体实施时,需要遍历应用程序包含的每一 API,只要有一个API 满足上述条件,即可确定该应用程序为恶意应用程序,只有所有的API均不满足上述条件, 才可确定该应用程序不是恶意应用程序。
[006引如图3所示,在步骤S133中,可W按照W下方法在非发送类API中递归查找是否 存在与执行参数与提取的用户信息匹配的非发送类API,为了便于描述,图3中将发送类 API称为源API ;
[0064] S31、在非发送类API中查找是否存在结果变量与源API的执行参数一致的目标 API,如果存在,执行步骤S32,否则,执行步骤S35。
[0065] S32、判断目标API的执行参数是否与提取的至少一个用户信息匹配,如果是,执 行步骤S33,否则,执行步骤S34。
[0066] S33、确定非发送类API中存在执行参数与提取的用户信息匹配的非发送类API, 流程结束。
[0067] S34、确定目标API为源API,并执行步骤S31。
[0068] S35、确定包含源API的应用程序不是恶意应用程序。
[0069] 由上述流程可知,本发明实施例中,如果目标API的执行参数与提取的所有用户 信息均不匹配时,则继续根据该目标API的执行参数查找非发送类API的结果变量中是 否存在与其执行参数一致的非发送类API,直至遍历所有的非发送类API,如果仍然未查找 到,则可W确定源API所在的应用程序不是恶意应用程序,即其发送的信息不是移动终端 中的用户信息。
[0070] 为了更好的理解本发明实施例中,W下W图2中的发送类API2为例对本发明实施 例的实施过程进行说明。图2中,发送类API2包含两个执行参数,假设分别为A1和A2,即 API1发送的信息为A1和A2。
[007。 对于A1来说,假设提取的用户信息中不存在与其匹配的用户信息,即API2发送的 信息A1可能是被处理后的信息。则还需要从非发送类API中查找结果变量为A1的API, 假设为非发送类API1,此时,需要判断A1被处理之前的信息即非发送类API1的执行参数 是否与提取的至少一个用户信息匹配,假设匹配到信息标识为ID2的用户信息,也就是说 API2发送的信息为被处理后的用户信息,因此,可W确定包含API2的应用程序为恶意应用 程序。
[007引对于A2来说,假设提取的用户信息中不存在与其匹配的用户信息,即API2发送的 信息A2也可能是被处理后的信息。则还需要从非发送类API中查找结果变量为A2的API, 假设为非发送类API1,此时,需要判断A2被处理之前的信息即非发送类API1的执行参数 B1是否与提取的至少一个用户信息匹配,假设不匹配,B1还可能是被处理之后的信息,因 此,继续在非发送类API中查找结果变量为B1的非发送类API,假设非发送类API2的结果 变量为B1,则判断非发送类API2的执行参数(即B2被处理之前的信息)是否与至少一个 用户信息匹配,如果匹配,确定包含发送类API2的应用程序为恶意应用程序。具体实施时, 如果仍不匹配,则在非发送类API中继续递归查找,直至遍历所有的非发送类API为止。
[0073] 由此可见,本发明实施例中,即使恶意应用程序
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1