一种基于apk加壳软件动态行为的查壳方法_2

文档序号:9453374阅读:来源:国知局
行为,构造通用系统函数特征库包括如下步骤:
[0044]1A)壳程序一启动即进入Hook函数,记录即将加载壳程序的动态链接库a.so ;
[0045]IB)加载壳程序的动态链接库a.so ;
[0046]1C)进入Hook函数,记录即将加载壳程序的动态链接库b.so ;
[0047]1D)加载壳程序的动态链接库b.so ;
[0048]1E)原程序正常启动;
[0049]1F)得到函数调用序列,作为加壳调用通用系统函数特征;
[0050]1G)将上述函数调用序列加入到通用系统函数特征库。
[0051]图4是本发明实施例构造特征函数特征库的流程框图;步骤I)所述检测加壳软件对特征函数的调用行为,具体为:使用IDA逆向工具对加壳软件的主程序(原程序)或动态链接程序进行逆向,通过人工分析汇编代码逻辑,定位涉及核心算法的函数(例如定位对加密的原程序源码进行解密的算法时,需要定位核心算法的一个“关键词”,可以采取如下操作:查找常用加解密动态链接库的导出函数,找到该函数在原程序中的调用位置即可确定解密算法的位置),得到加壳软件在解密原程序前调用的特征函数,将所述特征函数的名称作为加壳调用特征函数特征;进一步构造获得特征函数特征库;
[0052]2)启动某一加壳的程序;
[0053]所述APK加壳的程序开始启动时首先启动加壳软件;
[0054]3)针对步骤2)所述加壳的程序,采用动态行为监控方法,具体通过Hook函数对加壳程序的函数调用进行监控,判断加壳程序调用的函数是否是特征函数;
[0055]4)如果加壳程序调用的函数是特征函数,则将所述特征函数的名称与特征函数特征库中的加壳调用特征函数特征进行匹配,若找到特征匹配项,则输出相应的壳类型,结束操作;若未找到特征匹配项,则返回步骤3),Hook函数继续监控被调用的函数;
[0056]5)如果加壳程序调用的函数不是特征函数,则Hook函数继续监控被调用的函数,记录所述被调用函数的函数调用序列和函数调用参数;再返回步骤3),通过Hook函数继续监控被调用的函数;
[0057]本实施例中,上述使用hook技术对系统函数和特征函数的调用进行监控,然后让加壳的程序运行在部署了监控程序的环境中,一旦被监控的函数被调用,则跳转到hook函数中去对该函数调用的参数进行记录。
[0058]6)所述APK加壳的程序(原程序)成功启动后,将步骤5)记录的函数调用序列和函数调用参数与步骤I)中的通用系统函数特征库中的加壳调用通用系统函数特征进行匹配,匹配成功则得出加壳软件的类型;匹配不成功则输出未知壳。
[0059]上述基于APK加壳软件动态行为的查壳方法中,所述动态行为监控方法具体是修改正常函数的起始地址为Hook函数的起始地址,这样调用正常函数的时候就会跳转到Hook函数去执行,Hook函数执行完后跳转到正常函数的起始地址恢复正常执行流程,当加壳的程序启动后,一旦被监控的函数被程序调用,则跳转到Hook函数中对所述函数的调用参数进行记录。
[0060]本实施例中,步骤I)的【具体实施方式】如下,包括A和B:
[0061]A.针对加壳软件通用系统函数调用流程制定检测特征,主要执行以下操作:
[0062]Al.行为检测:大部分加壳软件为了安全性都将解密源程序的代码写入动态链接库里,在程序执行前动态加载,由于不同加壳软件加载的动态链接库的文件名、加载的顺序都不一样,这就可以作为鉴定的依据,依靠hook技术,可以获取加壳软件在执行过程中加载动态链接库的文件名及其加载顺序,针对不同加壳程序对这部分信息进行统计;
[0063]A2.特征构造:根据行为检测中收集的统计信息,针对某一加壳软件的唯一函数调用序列构建检测特征。
[0064]B.针对加壳软件特征函数调用制定检测特征,主要执行以下操作:
[0065]B1.行为检测:使用IDA等逆向工具对加壳软件的主程序或动态链接程序进行静态分析,通过人工分析找到涉及核心算法的函数;
[0066]B2.特征构造:根据人工分析找到的函数,作为某一加壳软件的特征函数,即若在解密源程序过程中调用了该函数,则可以断定很可能就是这种壳程序。
[0067]上述步骤3)中,程序正常启动后,说明壳程序已运行完毕,将动态监控过程中记录的函数调用序列和参数与检测特征进行匹配,若找到匹配项,则展示对应的壳类型,若未找到匹配项,则显示为未知壳。
[0068]图5是使用本发明提供的查壳方法部署查壳环境后,加壳的程序启动的流程框图。在部署了本发明的查壳环境后,查壳时,启动某一加壳的程序的流程如下:
[0069]101)运行壳程序,准备加载壳程序的动态链接库a.so,由于加载动态链接库的函数已被hook,所以会先运行设置的hook函数,进入hook函数,通过加载动态链接库的函数的参数获知即将加载的动态链接库文件名为a.so,记录加载a.so, hook函数执行完毕,进入正常的函数流程即加载a.so,运行a.so中的代码对加密后的原程序源码进行解密;
[0070]102)准备加载动态链接库b.so,进入hook函数,通过加载动态链接库的函数的参数获知即将加载的动态链接库文件名为b.S0,记录加载b.so, hook函数执行完毕,进入正常的函数流程即加载b.S0,运行b.SO中的代码对解密后的原程序源码进行内存布局;
[0071]103)加载动态链接库c.so,进入hook函数,通过加载动态链接库的函数的参数获知即将加载的动态链接库文件名为c.so,记录加载c.so,hook函数执行完毕,进入正常的函数流程即加载C.S0,运行c.SO中的代码对布局好的源程序源码进行重定向,并跳转到原程序的启动代码处;
[0072]104)原程序正常启动;
[0073]105)查壳程序将获取的动态链接库加载序列a.so、b.so,c.so与特征库中的序列进行匹配,若找到匹配项,则输出对应的壳类型,若未找到,输出未知壳。
[0074]需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
【主权项】
1.一种基于APK加壳软件动态行为的查壳方法,所述查壳方法通过安卓系统的Hook函数,针对壳程序对系统函数和特征函数的调用进行动态行为监控,一旦被监控的函数被调用,则跳转到Hook函数中进行记录,再通过特征比对,得到加壳的程序相应的壳程序的类型;具体包括如下步骤: 1)通过Hook函数对加壳软件的函数调用进行动态行为监控,分别检测APK加壳软件对通用系统函数和特征函数的调用行为,构造得到所述APK加壳软件的加壳函数调用特征,包括加壳调用通用系统函数特征和加壳调用特征函数特征; 2)启动某一加壳的程序; 3)针对步骤2)所述加壳的程序,通过Hook函数对加壳程序的函数调用进行动态行为监控,判断加壳程序调用的函数是否是特征函数; 4)如果加壳程序调用的函数是特征函数,则将所述特征函数的名称与特征函数特征库中的加壳调用特征函数特征进行匹配,若找到特征匹配项,则输出相应的壳类型,结束操作;若未找到特征匹配项,则返回步骤3),通过Hook函数继续监控被调用的函数; 5)如果加壳程序调用的函数不是特征函数,记录所述被调用函数的函数调用序列和函数调用参数;返回步骤3),通过Hook函数继续监控被调用的函数; 6)所述APK加壳的程序(原程序)成功启动后,将步骤5)记录的函数调用序列和函数调用参数与步骤I)中的通用系统函数特征库中的加壳调用通用系统函数特征进行匹配,匹配成功则得出加壳软件的类型;匹配不成功则输出未知壳。2.如权利要求1所述基于APK加壳软件动态行为的查壳方法,其特征是,步骤I)所述检测APK加壳软件对通用系统函数的调用行为,构造通用系统函数特征库包括如下步骤: IA)壳程序一启动即进入Hook函数,记录即将加载壳程序的动态链接库a.so ; IB)加载壳程序的动态链接库a.so ; IC)进入Hook函数,记录即将加载壳程序的动态链接库b.so ; ID)加载壳程序的动态链接库b.so ; IE)原程序正常启动; IF)得到函数调用序列,作为加壳调用通用系统函数特征; IG)将1F)所述函数调用序列加入到通用系统函数特征库。3.如权利要求1所述基于APK加壳软件动态行为的查壳方法,其特征是,步骤I)所述检测加壳软件对特征函数的调用行为,具体为:使用IDA逆向工具对加壳软件的主程序或动态链接程序进行逆向,通过人工分析汇编代码逻辑,定位涉及核心算法的函数,得到加壳软件在解密原程序前调用的特征函数,将所述特征函数的名称作为加壳调用特征函数特征。4.如权利要求1所述基于APK加壳软件动态行为的查壳方法,其特征是,步骤I)所述检测APK加壳软件具体为通过分别检测多种类型的加壳软件,得到所述多种类型加壳软件的加壳调用通用系统函数特征和加壳调用特征函数特征,建立多种类型加壳软件的加壳调用通用系统函数特征和加壳调用特征函数特征数据库。
【专利摘要】本发明公布了一种基于APK加壳软件动态行为的查壳方法,通过安卓系统的Hook函数,针对壳程序对系统函数和特征函数的调用进行动态行为监控,当被监控的函数被调用,则跳转到Hook函数进行记录,再通过特征比对得到相应的壳程序的类型;其中,通过Hook函数分别检测APK加壳软件对通用系统函数和特征函数的调用行为,构造得到加壳调用通用系统函数特征和加壳调用特征函数特征;再建立相应的特征库。查壳时,启动某一加壳的程序;通过Hook函数对加壳程序的函数调用进行动态行为监控,记录函数调用特征与特征库进行匹配,得出查壳结果。本发明可有效地对主流APK壳的类型进行检测,提高分析加壳恶意代码的准确性和效率。
【IPC分类】G06F21/56
【公开号】CN105205398
【申请号】CN201510740551
【发明人】文伟平
【申请人】北京鼎源科技有限公司
【公开日】2015年12月30日
【申请日】2015年11月4日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1