软件识别方法及装置的制造方法_4

文档序号:8361190阅读:来源:国知局
类型,提取反汇编处理后的可执行文件中的用户定义函数;生成用户定义函数对应的待识别特征值;确定待识别特征值与特征库中所存储的特征值的匹配数量;依据该匹配数量与待识别特征值的总数量的比值,确定待识别软件的属性。相对于现有技术,本方案提取特征值的方式使得特征性更强,从而提高了识别软件的准确性。
[0209]可选的,如图9所示,所述特征值生成模块840,可以包括:
[0210]命令序列获得单元841,用于对所述用户定义函数进行至少一次编译,获得所述用户定义函数对应的命令序列;
[0211]第一函数地址确定单元842,用于从所述命令序列中确定出所述用户定义函数所调用的第一函数的地址,其中,所述第一函数包括:库函数和/或API函数;
[0212]第一函数名称确定单元843,用于通过所述第一函数的地址,确定所述第一函数的名称;
[0213]替换单元844,用于将所述命令序列中的第一函数的地址替换为相应的第一函数的名称;
[0214]特征值生成单元845,用于对第一函数的地址替换为相应的第一函数的名称的所述命令序列运用预设的算法,以形成所述用户定义函数对应的具有预设数据长度的待识别特征值。
[0215]可选的,所述类型确定模块820,可以包括:
[0216]第一类型确定单元,用于通过提取程序入口函数的方式,确定所述反汇编处理后的可执行文件所利用的编译程序的类型;
[0217]或者,
[0218]第二类型确定单元,用于通过提取PE字节表的方式,确定所述反汇编处理后的可执行文件所利用的编译程序的类型。
[0219]可选的,如图10所示,所述用户定义函数提取模块830,可以包括:MFC类型的编译程序所对应的第一用户定义函数提取子模块831 ;
[0220]其中,所述第一用户定义函数提取子模块831,包括:
[0221]rdata节确定单元8311,用于确定所述反汇编处理后的可执行文件中的rdata节;
[0222]虚表确定单元8312,用于确定所述rdata节中的虚表;
[0223]虚函数去除单元8313,用于从虚表对应的虚函数中,去除重写的MFC类虚函数;
[0224]用户定义函数确定单元8314,用于将所剩余的虚函数作为反汇编处理后的可执行文件中的用户定义函数。
[0225]可选的,所述第一用户定义函数提取子模块831,还可以包括:
[0226]消息循环列表确定单元,用于确定rdata节中的消息循环列表;
[0227]消息循环处理函数提取单元,用于依据所述消息循环列表,确定出消息循环处理函数结构体,进而依据消息循环处理函数结构体,提取出消息循环处理函数;
[0228]被调用的函数提取单元,用于在从虚表对应的虚函数中,去除重写的MFC类虚函数之后,遍历所述消息循环处理函数和所剩余的虚函数,获取被调用的函数;
[0229]所述用户定义函数确定单元8314,用于将所述被调用的函数和所剩余的虚函数作为反汇编处理后的可执行文件中的用户定义函数。
[0230]可选的,如图11所示,所述用户定义函数提取模块830,包括:VB类型的编译程序所对应的第二用户定义函数提取子模块832 ;
[0231]其中,所述第二用户定义函数提取子模块832,可以包括:
[0232]文件头结构体确定单元8321,用于依据所述反汇编处理后的可执行文件的程序入口代码,确定出文件头结构体;
[0233]事件处理函数结构体确定单元8322,用于解析所述文件头结构体,确定出所述反汇编处理后的可执行文件的事件处理函数结构体;
[0234]事件处理函数提取单元8323,用于依据所述事件处理函数结构体,提取所述反汇编处理后的可执行文件中的事件处理函数;
[0235]被调用的函数获取单元8324,用于遍历所述事件处理函数,获取被调用的函数;
[0236]用户定义函数确定单元8325,用于将所获取的被调用的函数作为所述反汇编处理后的可执行文件中的用户定义函数。
[0237]可选的,如图12所示,所述用户定义函数提取模块830,包括=Delphi类型的编译程序所对应的第三用户定义函数提取子模块833 ;
[0238]其中,所述第三用户定义函数提取子模块833,包括:
[0239]第一个节表确定单元8331,用于确定所述反汇编处理后的可执行文件的第一个节表;
[0240]文件头结构体确定单元8332,用于从所述第一个节表处开始扫描,以确定文件头结构体;
[0241]事件处理函数结构体确定单元8333,用于解析所述文件头结构体,确定事件处理函数结构体;
[0242]事件处理函数提取单元8334,用于依据所述事件处理函数结构体,提取所述反汇编处理后的可执行文件中的事件处理函数;
[0243]被调用的函数获取单元8335,用于遍历所述事件处理函数,获取被调用的函数;
[0244]用户定义函数确定单元8336,用于将所获取的被调用的函数作为所述反汇编处理后的可执行文件中的用户定义函数。
[0245]可选的,如图13所示,所述用户定义函数提取模块830,可以包括:易语言类型的编译程序所对应的第四用户定义函数提取子模块834 ;
[0246]其中,所述第四用户定义函数提取子模块834,可以包括:
[0247]链接方式确定单元8341,用于确定属于易语言类型的编译程序的链接方式,当确定出所述链接方式为静态链接时,触发第一用户定义函数确定单元8342 ;当确定出所述链接方式为动态链接时,触发第二用户定义函数确定单元8343 ;
[0248]所述第一用户定义函数确定单元8342,用于在开始地址至结束地址的地址范围内扫描,确定事件处理函数的开始点;依据所述开始点,确定出所述反汇编处理后的可执行文件中的事件处理函数;遍历所述事件处理函数,获取被调用的函数;将所述被调用的函数作为反汇编处理后的可执行文件中的用户定义函数;其中,所述开始地址为所述反汇编处理后的可执行文件的入口代码节地址,所述结束地址为第二序列所在的地址;
[0249]所述第二用户定义函数确定单元8343,用于对每一代码节执行特定操作,所述特定操作包括:通过预定特征码,确定入口结构体;解析入口结构体,在所述入口结构体所指向的开始地址至当前代码节的结尾地址的地址范围内扫描,确定事件处理函数的开始点;依据所述开始点,确定出所述反汇编处理后的可执行文件中的事件处理函数;遍历所述事件处理函数,获取被调用的函数;将所述被调用的函数作为反汇编处理后的可执行文件中的用户定义函数;其中,所述预定特征码为确定出所述链接方式为动态链接方式时对代码节所做的标记。
[0250]可选的,如图14所示,所述用户定义函数提取模块830,可以包括:非框架类型的编译程序所对应的第五用户定义函数提取子模块835 ;
[0251]其中,所述第五用户定义函数提取子模块835,用于从所述反汇编处理后的可执行文件的入口代码节开始,对每一代码节执行如下操作:
[0252]扫描所述代码节中的函数;其中,当扫描出的函数为导出函数时,继续扫描所述导出函数所调用的函数;
[0253]从所扫描出的函数中,去除属于库函数的函数,并将剩余的函数确定为所述反汇编处理后的可执行文件中的用户定义函数。
[0254]需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0255]本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:R0M/RAM、磁碟、光盘等。
[0256]以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
【主权项】
1.一种软件识别方法,其特征在于,包括: 将待识别软件的可执行文件进行反汇编处理; 确定所述反汇编处理后的可执行文件所利用的编译程序的类型; 根据所述编译程序的类型,提取所述反汇编处理后的可执行文件中的用户定义函数; 生成所述用户定义函数对应的待识别特征值; 确定所述待识别特征值与特征库中所存储的特征值的匹配数量,其中,所述特征库存储有从恶意软件中提取的用户定义函数所对应的特征值,且所述特征库中所存储的特征值与所述待识别特征值具有相同的数据长度; 依据所述匹配数量与所述待识别特征值的总数量的比值,确定所述待识别软件的属性。
2.根据权利要求1所述的方法,其特征在于,所述生成所述用户定义函数对应的待识别特征值,包括: 对所述用户定义函数进行至少一次编译,获得所述用户定义函数对应的命令序列;从所述命令序列中确定出所述用户定义函数所调用的第一函数的地址,其中,所述第一函数包括:库函数和/或API函数; 通过所述第一函数的地址,确定所述第一函数的名称; 将所述命令序列中的第一函数的地址替换为相应的第一函数的名称; 对第一函数的地址替换为相应的第一函数的名称的所述命令序列运用预设的算法,以形成所述用户定义函数对应的待识别特征值。
3.根据权利要求1所述的方法,其特征在于,通过提取程序入口函数或PE(PortableExecutable,可移植可执行)字节表的方式,确定所述反汇编处理后的可执行文件所利用的编译程序的类型。
4.根据权利要求1所述的方法,其特征在于,所述待识别软件的属性包括:正常软件、恶意软件、偏正常软件或偏恶意软件。
5.根据权利要求1-4任意一项所述的方法,其特征在于,当确定出所述反汇编处理后的可执行文件所利用的编译程序为MFC类型时,所述根据所述编译程序的类型,提取所述反汇编处理后的可执行文件中的用户定义函数,包括: 确定所述反汇编处理后的可执行文件中的rdata节; 确定所述rdata节中的虚表; 从虚表对应的虚函数中,去除重写的MFC类虚函数; 将所剩余的虚函数作为反汇编处理后的可执行文件中的用户定义函数。
6.根据权利要求5所述的方法,其特征在于,所述根据所述编译程序的类型,提取所述反汇编处理后的可执行文件中的用户定义函数,还包括: 确定rdata节中的消息循环列表; 依据所述消息循环列表,确定出消息循环处理函数结构体,进而依据消息循环处理函数结构体,提取出消息循环处理函数; 在从虚表对应的虚函数中,去除重写的MFC类虚函数之后,遍历所述消息循环处理函数和所剩余的虚函数,获取被调用的函数; 所述将所剩余的虚函数作为反汇编处理后的可执行文件中的用户定义函数
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1